当前位置: 首页 > 知识库问答 >
问题:

如何同时迭代这些数组?

臧梓
2023-03-14

我有多个嵌套循环和一些数组,我想同时循环访问。

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

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次,因为ArrayOne中有三个数组。那么,问题是,如何在现有的 for 循环中正确遍历 ArrayTwo

共有1个答案

巫墨一
2023-03-14

使用另一个变量将索引保存到 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++;
}
 类似资料:
  • 问题内容: 我有一个像这样的ArrayList对象: 如何遍历列表?我想在TextView中显示值,该值来自ArrayList对象的数据。 问题答案: 最简单的方法是遍历的所有s ,然后遍历的所有键:

  • 问题 你想同时迭代多个序列,每次分别从一个序列中取一个元素。 解决方案 为了同时迭代多个序列,使用 zip() 函数。比如: >>> xpts = [1, 5, 4, 2, 10, 7] >>> ypts = [101, 78, 37, 15, 62, 99] >>> for x, y in zip(xpts, ypts): ... print(x,y) ... 1 101 5 78 4

  • 我有两个双数组: 我的循环结构如下所示: 我要做的是连续获取项目LatArr[0]和LonArr[0]<这样我就可以在lat1中使用LatArr[0],在lon1中使用LonArr[0]。此外,LatArr[1]应位于lat2,LonArr[1]应位于lon2 但此代码获取LatArr[0]。。[1] 。。和LonArr[0]。。[1] 。。两次每个元素打印两次 任何人都请纠正我的错误,我完全不希

  • 原文: http://exploringjs.com/impatient-js/ch_sync-iteration.html 27.1。什么是同步迭代? 同步迭代是一个 _ 协议 _(接口加上使用它们的规则),它连接 JavaScript 中的两组实体: **数据来源:**一方面,数据有各种形状和大小。在 JavaScript 的标准库中,您有线性数据结构 Array,有序集合 Set(元素按添加

  • 我从一个布局数组中拼接了一个位图,它将一个更大的位图作为指导。在一个位图中使用多个位图。我旋转整个位图时,我的解决方案是重新绘制它,但要让数组考虑这个旋转。位图的制作由数组的顺序决定。缝合假定数组从零开始,即第一个索引或最左上角,然后向右到最后,再到下一行的开始。我想有一个90、180、270和360功能可以调用。我想360很容易,我倒着迭代。我用的是11乘11,这是常数。 例如 当我旋转90度

  • 标题有点混乱,很抱歉,所以我有一个太多的数组,其中一个数组比第二个数组包含更多 所以我想做的是例如 这只会注销第一个一次,但我想要的是日志y和x长度一样多,希望这是足够清楚的