php foreach loop - PullRequest
       3

php foreach loop

2 голосов
/ 13 января 2012

В моем коде два массива.Необходимо выполнить цикл foreach для обоих этих массивов одновременно.Можно ли указать два аргумента одновременно, например foreach($array1 as $data1 and $array2 as $data2) или что-то еще?

Ответы [ 5 ]

2 голосов
/ 13 января 2012

Предполагая, что оба имеют одинаковое количество элементов

Если они оба являются 0-индексированными массивами:

foreach ($array_1 as $key => $data_1) {
  $data_2 = $array_2[$key];
}

В противном случае:

$keys = array_combine(array_keys($array_1), array_keys($array_2));

foreach ($keys as $key_1 => $key_2) {
  $data_1 = $array_1[$key_1];
  $data_2 = $array_2[$key_2];
}
2 голосов
/ 13 января 2012

Если они оба одинаковые клавиши, вы можете сделать это:

foreach($array1 as $key=>data1){
    $data2 = $array2[$key];
}
1 голос
/ 13 января 2012

Не используйте foreach. используйте For и используйте увеличенный индекс, например. $ i ++ для одновременного доступа к обоим массивам.

Всегда ли оба массива одинакового размера? Тогда это будет работать:

$max =sizeof($array);
for($i = 0; $i < $max; $i++)

array[$i].attribute
array2[$i].attribute

Если массивы разных размеров, вам, возможно, придется настроить подход. Возможно использовать некоторое время.

итерационные методы:

http://php.net/manual/en/control-structures.while.php

http://php.net/manual/en/control-structures.for.php

http://php.net/manual/en/control-structures.do.while.php

0 голосов
/ 13 января 2012

Нет, насколько мне известно, с помощью foreach, но это легко сделать с помощью for:

<?php

$cond1 = 0<count($array1);
$cond2 = 0<count($array2);

for ($i=0;$cond1 || $cond2;$i++)
{
    if ($cond1)
    {
        // work with $array1
    }
    if ($cond2)
    {
        // work with $array2
    }
    $cond1 = 0<count($array1);
    $cond2 = 0<count($array2);
}

?>
0 голосов
/ 13 января 2012

используется для или во время цикла, например

$i = 0; 
while($i < count($ar1) && $i < count($ar2)  ) // $i less than both length ! 
{ 
  $ar1Item = $ar1[$i];
  $ar2Item = $ar2[$i];

  $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...