【问题标题】:double foreach loop doesnt loop in cakephp双 foreach 循环不会在 cakephp 中循环
【发布时间】:2020-04-20 17:35:47
【问题描述】:

在 cakephp3.2 php>5 中,我无法让双 foreach 循环正常工作。我尝试了这个简单的测试来证明发生了什么。 $lesson 是一个多维数组,但我只关注它包含的 1 个值。它只经过 1 次迭代。 如您所见,我有一个包含 3 个值的数组。这个双 foreach 循环应该产生 3X3 的输出,但它只产生 4? 为什么双 foreach 循环不能正常循环?

its a multi-dimensional array  and i am just using id fields. I want to remove duplicate names using a double foreach

lesson[1][id]='40650'
lesson[1][name]='fred'
lesson[1][name2]='smith'
lesson[2][id]='40651'
lesson[2][name]='fred'
lesson[2][name2]='smith'  
lesson[3][name]='40650'
lesson[3][id]='fred2'
lesson[3][name2]='smith'

  foreach ($lesson as $key1 =>$item){

             debug( $item['id']);

                foreach ($lesson as $key2 =>$item2){

                   debug( $item2['id']);


                }

           }

 \src\Controller\LessonsController.php (line 6429)

(int) 40650

\src\Controller\LessonsController.php (line 6433)

(int) 40650

\src\Controller\LessonsController.php (line 6433)

(int) 40651

\src\Controller\LessonsController.php (line 6433)

(int) 40652

【问题讨论】:

  • 分享您的阵列,它的外观如何?
  • ok 添加到 OP 中
  • 在查询中使用 group by 或 distinct 以避免重复。
  • 我已经在 PHP 5.6 和 7.3 上尝试过你的代码,它运行良好。这真的是全部吗,或者您是否从一些较大的代码中提取了它并且没有完全测试最小的情况?
  • 还有其他嵌套的字段/记录在这个问题上没有接近,但它必须例如课程[1][student_record][1]='1'

标签: php cakephp


【解决方案1】:

您的第二个循环通过同一个数组$lesson

你需要把它改成遍历第一个循环的结果

foreach ($lesson as $key1 =>$item) {
   foreach ($item as $key2 => $item2) {
      // Do stuff
   }
}

【讨论】:

  • 不,我需要遍历数组 2 次来比较重复项。
  • @atown99 这不是您在问题中要问的......您到底想比较什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2013-05-19
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多