Как перебирать эти массивы одновременно? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть несколько вложенных циклов и несколько массивов, которые я хочу перебирать одновременно.

Теперь первый массив содержит данные в некотором хаотическом c порядке:

ArrayOne ( 
    [1298] => Array ( 
        [manuf comment for dev 1] => Array ( 
            [comment 1 for IMEI no. 277745.5] => 1298 
        ) 
    ) 
    [1312] => Array ( 
        [0] => Array ( 
            [comment 3 for IMEI no. 570] => 1312 
        ) 
    ) 
    [1318] => Array ( 
        [0] => Array ( 
            [comment 2 for IMEI no.576] => 1318 
        ) 
    ) 
)

Как вы можете видеть выше, есть три массива (я знаю, что они выглядят странно, но так они установлены, и я не могу их изменить).

следующий массив:

ArrayTwo ( [0] => 1321 [1] => 1322 [2] => 1323 )

Важное примечание: длина ArrayOne и ArrayTwo ВСЕГДА будет одинаковой. Итак, если ArrayOne содержит ТРИ массива, ArraTwo будет содержать внутри ТРИ значения.

Я повторяю теперь вот так:

foreach ($ArrayOne as $devices_id => $manuf_comments) {
    foreach ($manuf_comments as $mc => $client_comments) {
        foreach ($client_comments as $cl => $ff) {
          echo "</br>MANUF COMMENTS: "; 
          print_r($mc); 
          echo "</br>DEV comments: ";
          print_r($cl);
          echo "</br>DEV id: ";
          print_r($devices_id);
          echo "</br>*";
    }
  }
}

l oop выше печатает:

MANUF COMMENTS: manuf comment for dev 1
DEV comments: comment 1 for IMEI no. 277745.5
DEV id: 1298
*
MANUF COMMENTS: 0
DEV comments: comment 3 for IMEI no. 570
DEV id: 1312
*
MANUF COMMENTS: 0
DEV comments: comment 2 for IMEI no.576
DEV id: 1318
*

Как вы можете видеть, используя вложенный foreach, я могу правильно распечатать значения ArrayOne, однако, если я попытаюсь ввести l oop через ArrayTwo внутри этих циклов foreach, он будет go 3 раза, потому что в ArrayOne три массива. Итак, вопрос в том, как я могу правильно пропустить oop через ArrayTwo внутри существующих циклов for?

1 Ответ

0 голосов
/ 14 июля 2020

Используйте другую переменную для хранения индекса в ArrayTwo и просто увеличивайте его в том же l oop.

$indexTwo = 0;
foreach ($ArrayOne as $devices_id => $manuf_comments) {
    $eltTwo = $ArrayTwo[$indexTwo];
    foreach ($manuf_comments as $mc => $client_comments) {
        foreach ($client_comments as $cl => $ff) {
            echo "</br>MANUF COMMENTS: "; 
            print_r($mc); 
            echo "</br>DEV comments: ";
            print_r($cl);
            echo "</br>DEV id: ";
            print_r($devices_id);
            echo "</br>*";
        }
    }
    $indexTwo++;
}
...