【问题标题】:PHP foreach loop inside foreach loop?foreach循环内的PHP foreach循环?
【发布时间】:2016-09-26 16:27:43
【问题描述】:

我有两个 foreach 循环。在第一个 foreach 循环菜单列表和第二个 foreach 循环中是数据库获取循环。所以我想比较第一个 foreach 键和第二个 foreach 值第一个 foreach 数组结果显示

   Array
(
    [master/city] => City
    [master/national_holiday] => National Holiday
    [master/operator_comments] => Operator Comments
    [master/sensors] => Sensors
)

和第二个foreach数组结果

   Array
        (
            [0] => Array
                (
                    [menu_url] => monitoring/tickets
                    [menu_category] => monitoring
                    [read] => 1
                    [write] => 1
                )

            [1] => Array
                (
                    [menu_url] => monitoring/serach_tickets
                    [menu_category] => monitoring
                    [read] => 1
                    [write] => 1
                )

            [2] => Array
                (
                    [menu_url] => master/national_holiday
                    [menu_category] => monitoring
                    [read] => 1
                    [write] => 0
                )
)

我尝试使用此代码但无法正常工作

   foreach( $first_array as $key => $value) {

  foreach( $second_array as $second ) {
    if ($second['value'] == $key) {
       echo "Hi";
    }
   }
}

你能提出我的错误吗?

我在视图中使用的真实代码

<?php
                    $i = 1;

                    foreach($first_array as $k => $val) {
                    ?>
                    <tr>
                      <td>{{ $i }}</td>
                      <td class="mailbox-name">{{ $val }}</td>
                    <?php
                        foreach ($edit_rights['role_rights'] as $rights) {
                    ?>                                           
                      <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td>
                      <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td>
                    </tr>
                     <?php } $i++;  } ?>
                    </tr>

【问题讨论】:

  • 没有匹配的,你想做什么?
  • 您的第二个数组中没有名为“值”的键。 ($second['value'] 将为 null 或更确切地说是错误“未定义的索引”)
  • 除此之外:什么值应该与哪个键匹配?没有什么能比得上的。还是有其他数据您没有显示?
  • @Frayne 我更新了我的代码你能解释一下我的错误是什么
  • 我看不到你的更新..

标签: php


【解决方案1】:

因为我没有看到您的数组之间有任何关系,但我可以猜到您在寻找什么。

您可以寻找第二个数组的menu_url 和 第一个数组的键。

为此,您需要在第二个数组中使用$second['menu_url']

foreach( $first_array as $key => $value) {
  foreach( $second_array as $second ){
    if ($second['menu_url'] == $key) {
       echo "Hi";
    }
   }
}

【讨论】:

  • 谢谢@Frayne Konok
【解决方案2】:

如果通过 $second_array 值检查匹配。使用此代码:

foreach( $first_array as $key => $value) {
      foreach( $second_array as $second=>$val ) {
          foreach($val as $check=>$check_value){
                //var_export($check);echo "\n";
                //var_export($key);echo "\n";
                //var_export($second_array[$second][$check]);echo "\n";
                //var_export($second_array[$second][$check] == $key);echo "\n";
                //echo"======================= \n";
                if ($second_array[$second][$check] == $key) {
                   echo "Hi";
                }
            }
       }
}

如果只是检查 ['menu_url'] 是否匹配数组。使用此代码:

foreach( $first_array as $key => $value) {
  foreach( $second_array as $second ){
    if ($second['menu_url'] == $key) {
       echo "Hi";
    }
   }
}

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2016-09-02
    • 2014-03-15
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多