Вложенный foreach в PHP приводит к различным результатам, чем я ожидаю

У меня есть проблемы для итерации дважды на том же массиве:


  
    
      
    'comision_'.$indice),true)?>  
            
            
           
        
    
  
  

Вышеупомянутая печать кода:

code result

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

expected results

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

5
задан Glorfindel 8 July 2019 в 10:07
поделиться

4 ответа

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

9
ответ дан 13 December 2019 в 19:24
поделиться

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

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

not

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

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

<?php foreach ($comisiones as $comision1): ?>  
0
ответ дан 13 December 2019 в 19:24
поделиться

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

$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 сбрасывается каждый раз, когда указатель массива, поэтому вы вылезает только жуткий бардак. :)

0
ответ дан 13 December 2019 в 19:24
поделиться

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

for ($i = 0; $i < count($comisiones); ++$i) {
    // Do what you want
}
2
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: