【问题标题】:PHP foreach multi arrayPHP foreach 多数组
【发布时间】:2014-01-06 11:53:52
【问题描述】:

我使用https://github.com/humanmade/Custom-Meta-Boxes/ 将这个自定义的可重复自定义字段设置为 wordpress。给定的数组是这样的

    Array
(
    [0] => Array
        (
            [photoset-caption] => Array
                (
                    [cmb-field-0] => Caption1
                    [cmb-field-1] => Caption2
                    [cmb-field-2] => Caption3
                    [cmb-field-3] => Caption4
                )

            [photoset-image] => Array
                (
                    [cmb-field-0] => 17
                    [cmb-field-1] => 16
                    [cmb-field-2] => 15
                    [cmb-field-3] => 14
                )

        )

    [1] => Array
        (
            [photoset-caption] => Array
                (
                    [cmb-field-0] => Caption1
                    [cmb-field-1] => Caption2
                    [cmb-field-2] => Caption3
                    [cmb-field-3] => Caption4
                )

            [photoset-image] => Array
                (
                    [cmb-field-0] => 17
                    [cmb-field-1] => 16
                    [cmb-field-2] => 15
                    [cmb-field-3] => 14
                )

        )

)

它试图做的循环是这样的。

 // get the custom fields for this post
    $photoset = get_post_meta($post->ID, 'photoset_group_fields', false ); 

        echo '<div class="photoset">';
        echo '<div class="photoset-row">';

        foreach($photoset as $photosetloop){
        echo '<figure class="photoset-item">';
        echo '<div>' . wp_get_attachment_image($photosetloop['photoset-image'], 'large' ) . '</div>';
        echo '<figcaption>' . $photosetloop['photoset-caption'] .'</figcaption>';
        echo '</figure>';
        }   

        echo '</div>';
        echo '</div>';

所以循环有 .photoset-item 并且里面有图片和标题。 我的问题是如何解决它,谢谢。

我确实更新了数组,我有我循环的组。

【问题讨论】:

    标签: php arrays wordpress multidimensional-array foreach


    【解决方案1】:

    最简单的方法是创建两个 foreach,如果需要,您也可以使用函数递归。

    <?php
    $photos =array(
        'photoset-caption' => array(
                'cmb-field-0' => 'Caption1',
                'cmb-field-1' => 'Caption2',
                'cmb-field-2' => 'Caption3',
                'cmb-field-3' => 'Caption4'
         ),
        'photoset-image' => array(
                'cmb-field-0' => 17,
                'cmb-field-1' => 16,
                'cmb-field-2' => 15,
                'cmb-field-3' => 14
        )
    );
    
        foreach($photos as $k => $photo){
    
            echo '<h1>'.$k.'</h1>';
    
            foreach($photo as $key => $value){
                echo $key.': '. $value.'<br/>';
            }
            echo '<hr/>';
        }
    

    在此处查看示例:example

    【讨论】:

      【解决方案2】:

      这不是最优雅的方式,但在这种情况下确实有效。

      $arr = Array
      (
          "photoset-caption" => Array
          (
              "cmb-field-0" => "Caption1",
              "cmb-field-1" => "Caption2",
              "cmb-field-2" => "Caption3",
              "cmb-field-3" => "Caption4"
          ),
      
      "photoset-image" => Array
          (
              "cmb-field-0" => 17,
              "cmb-field-1" => 16,
              "cmb-field-2" => 15,
              "cmb-field-3" => 14
          )
      );
      
      $count = count($arr["photoset-caption"]);
      for($i = 0; $i < $count; ++$i) {
          echo 'Loop #'.$i.'<br>';
          echo $arr["photoset-caption"]["cmb-field-".$i], '<br>';
          echo $arr["photoset-image"]["cmb-field-".$i], '<br>';
          echo '<br>';
      }
      

      您可以将其粘贴到此处: http://writecodeonline.com/php/

      【讨论】:

        猜你喜欢
        • 2017-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 2019-02-09
        • 2015-06-30
        • 1970-01-01
        相关资源
        最近更新 更多