Intereting Posts
Попытка создать статический класс базы данных, доступ к которому я могу получить из любой функции вне класса Разделить массив на основе данных массива я хочу получить сумму файлов в папке по php PHP закомментирован браузером Самый эффективный подход для многоязычного веб-сайта PHP Тег DIV, создающий новую строку в php php POST форма запроса динамической переменной Ошибка PHP foreach «Недопустимый аргумент, предоставленный для foreach» Сбросьте все, кроме буквенно-цифровых и европейских символов в PHP Как получить последние 7 дней с помощью PHP как сделать regexp не голодным с кавычками? Регулярное выражение (Regex) для разбора HTML в PHP Если я храню объект в сеансе PHP, когда я получаю этот объект, является ли он полноценным объектом, на который я могу вызвать функции? Как не показывать последнюю скобку в монологическом журнале? Лучшее решение для антиспама в PHP?

вложенная foreach в PHP проблема

У меня возникают проблемы с повторением итерации в одном массиве:

<? $indice=0 ?> <?php foreach ($comisiones as $comision1):?> <tr> <td><?php echo ++$indice ?></td> <td><?php echo tag('select',array('name'=>'comision_'.$indice),true)?> <?php foreach ($comisiones as $comision2):?> <option value="<?php echo $comision2->getId()?>"> <?php echo $comision2->getNombre()." - ".$comision2->getDescripcion()?> </option> <?php endforeach?> </select> </td> </tr> <?php endforeach?> 

Вышеприведенный код печатает:

результат кода http://img440.imageshack.us/img440/7732/res.png

И я ожидаю увидеть что-то вроде этого (метки комбо в изображениях не то же самое, но я думаю, что идея понятна):

ожидаемые результаты http://img229.imageshack.us/img229/7969/esperado.png

заранее спасибо

Мой первый инстинкт не использует петли foreach . Я считаю, что PHP использует некоторые внутренние указатели, поэтому две петли foreach влияют на положение друг друга. Вместо этого используйте обычный цикл.

На основе вашего кода кажется, что вам действительно не нужен цикл foreach в цикле outher. Просто сделайте регулярный цикл от 0 до размера массива. Что-то вроде этого:

 for ($i = 0; $i < count($comisiones); ++$i) { // Do what you want } 

Я полагаю, что вторая петля должна выглядеть или связана с ней

 <?php foreach ($comision1 as $comision2): ?> 

не

 <?php foreach ($comisiones as $comision2): ?> 

в противном случае вы не используете $ commision1 из первого цикла anyware

 <?php foreach ($comisiones as $comision1): ?> 

Используйте обычные для циклов с двумя индексами, например:

 $len = count($comisiones); for($i = 0; $i < $len; ++$i) for($j = 0; $j < $len; ++$j) 

Как четко указано на веб-сайте PHP:

"Примечание: Когда foreach сначала запускает выполнение, внутренний указатель массива автоматически возвращается к первому элементу массива." [источник: http://www.php.net/manual/en/control-structures.foreach.php ]

Поэтому ваш внутренний цикл foreach сбрасывается каждый раз при указателе массива, поэтому вы получаете только ужасный беспорядок. 🙂