【问题标题】:Foreach inside of a foreachforeach 内部的 foreach
【发布时间】:2013-03-23 00:59:31
【问题描述】:

我需要关于 foreach 中的 foreach 的帮助。我正在使用 Wordpress 插件 Advanced Custom Fields 在转发器字段内创建转发器字段。然后,我使用以下代码在主循环外的前端显示(或尝试显示)它们:

 <?php
            //Loop Through Days and Sights
              $days = get_field('day_and_highlights');
              $n = 0;

              if($days){
                echo '<div>';
                  foreach($days as $day){ 
                    $n++;
                    echo '<h2> Day ' . $n . ': ' . $day['destination_dropdown'] . '</h2><br/>';
                    //Loop through Attractions
                    <?php
                    $attractions = get_field('attraction_list');
                    if($attractions){
                        echo '<ul class=\"list_attractions\">';
                        foreach($attractions as $attraction){
                            echo '<li class=\"single_attraction\"><p>' . $attraction['add_attraction'] . '</p></li>';
                        }; //end foreach
                        echo '</ul>';
                    }; //endif 
                  };
                echo '</div>';
              };
            ?>

第一个 foreach 回声的一切都在现场。内部 foreach 不做千斤顶。我不能让它做任何事情。

【问题讨论】:

  • 你 print_r($attractions) 了吗?
  • 不,但我现在这样做了。没啥事儿。我想完成什么?
  • 当你迭代一个数组时......很高兴知道你正在交互的数组里面有什么。如果数组为空,则正常情况下什么都没有发生。 print_r 打印数组内容。继续阅读这里>php.net/print_r
  • 谢谢 Jan。巧合的是,当我 print_r($days) 时,我得到了这个
  • 'Array ([0] => Array ([destination_dropdown] => 意大利佛罗伦萨 [attraction_list] => Array ([0] => Array ([add_attraction] => (Rome) Colosseum) [1] => Array ( [add_attraction] => (Rome) Colosseum ) [2] => Array ( [add_attraction] => (Rome) Colosseum ) etc...' 所以所有的值都在第一个数组中?所以困惑。

标签: php wordpress foreach


【解决方案1】:

你有一个额外的 php 标签:

             //Loop through Attractions
             <?php
                $attractions = get_field('attraction_list');
                if($attractions){

尝试删除它。

另外,您的 IF 和 FOREACH 语句不应以分号结尾:

                }; //endif 

http://www.php.net/manual/en/control-structures.foreach.php

【讨论】:

  • 是的,我正在使用替代选项,我想我在将代码粘贴到此处之前忘记删除它。我会删除,但我认为这不会解决任何问题。
  • 是的,这不会改变任何事情。
  • 非常感谢。从现在开始我不会那样做。我其实不知道我为什么一开始就开始了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
相关资源
最近更新 更多