Задать вопрос
@Dealaxer

PHP Как прогнать два массива JSON через один Foreach?

Приветствую всех!

Есть два разных массива, которые никак не похожи друг на друга. Их прогоняю через foreach:
foreach($arr['value'] as $key=>$val){
//Выполнение начального кода

                foreach($arr2['value'] as $key=>$val2){
                //выполнение кода во втором цикле
                }
//Выполнение последующего кода
}


Не могу понять как сделать так, чтобы циклы работали поочередно, то есть:
В 1 проходе/итерации 1 цикла, дочерний/второй цикл совершил также 1 проход, приостановился и после того как 1 цикл начнет совершать 2 проход, дочерний цикл начал также 2 проход с того места где остановился и так до того, пока 1 цикл не сделает все проходы.

Кто-нибудь такое делал?
Подскажите как такое осуществить.

Заранее благодарю.
  • Вопрос задан
  • 454 просмотра
Подписаться 1 Сложный Комментировать
Решения вопроса 2
romy4
@romy4
Exception handler
Есть несколько вариантов.
1. выдернуть все ключи из первого и из второго в массивы. а дальше банальным перебором
$keys1 = подставьте тут сами;)
$keys2 = и тут ;)
for ( $k=0; $k < count($keys1) && $k < count($keys2); $k++)
{
   $value_from_arr1 = $arr['value'][$keys1[$k]];
   $value_from_arr2 = $arr2['value'][$keys2[$k]];
   // do stuff
}

например вот
а ещё есть штука "генераторы". в итоге вы получаете то же самое, но синтаксически красивее.
function from_arr(&$arr)
{
 //
}

while ( ($value1 = from_arr($arr1))!==null && ($value2 = from_arr($arr2))!==null)
{
   // do_stuff
}

вот как-то так. усложнять более можно, но нет необходимости.
Ответ написан
@Dealaxer Автор вопроса
romy4, сделал по твоему примеру, немного изменив учитывая, что у меня JSON массивы:
for ( $k=0; $k < count($arr['value']) && $k < count($arr2['value']); $k++)
     {
           echo $arr['value'][$k]["mykey"];
           echo $arr2['value'][$k]["mykey"];
     }


Все работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Не подойдут Вам тут вложенные циклы. Используйте while по индексам или что то в этом роде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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