【问题标题】:How to iterate through these arrays at the same time?如何同时遍历这些数组?
【发布时间】:2020-11-03 03:47:36
【问题描述】:

我有多个嵌套循环和一些我想同时迭代的数组。

现在,第一个数组以某种混乱的顺序包含数据:

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 )

重要提示:ArrayOneArrayTwo 的长度始终相同。所以如果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>*";
    }
  }
}

上面的循环打印:

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 值,但是如果我尝试在这些 foreach 循环中循环 ArrayTwo,它将执行 3 次,因为 @ 中有三个数组987654331@。 那么,问题是,如何在现有的 for 循环中正确循环 ArrayTwo

【问题讨论】:

    标签: php arrays multidimensional-array foreach


    【解决方案1】:

    使用另一个变量将索引保存到ArrayTwo,并在同一个循环中递增它。

    $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++;
    }
    

    【讨论】:

    • 谢谢你,你好像是个在睡眠中知道这些事情的人。
    猜你喜欢
    • 2021-03-23
    • 2015-12-21
    • 1970-01-01
    • 2022-11-18
    • 2014-02-07
    • 1970-01-01
    • 2019-10-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多