循环遍历多维数组并写入每个父数组

时间:2018-06-16 02:01:18

标签: php arrays multidimensional-array

我正在循环遍历字段组和子字段的多维数组使用此代码:

<?php 
$field_groups = acf_get_field_groups();

foreach( $field_groups as $field_group ) { 

    $acf_groups = acf_get_fields_by_id( $field_group['ID'] );

    foreach($acf_groups as $group) {

        echo '<pre>';
        var_dump($group);
        echo '</pre>';

    }

 }

这让我得到了这个数组:

array(20) {
  ["group"]=>
  string(6) "button"
      ["sub_fields"]=>
      array(5) {
      [0]=>
      array(23) {
         ["name"]=>
         string(11) "button_text"
      }
      [1]=>
      array(19) {
          ["name"]=>
          string(11) "button_link"
      }
   }
}

array(20) {
  ["group"]=>
  string(2) "h1"
     ["sub_fields"]=>
     array(8) {
     [0]=>
     array(23) {
         ["name"]=>
         string(9) "font_size"
     }
     [1]=>
     array(26) {
         ["name"]=>
         string(15) "font_size_units"
     }
   }
}

我要做的是打印一个文件,其中包含每个$group数组的子字段值(分别为“按钮”和“h1”)。

例如,我想在这种情况下最终得到2个文件:

button.php
h1.php

button.php会有:

button_text
button_link

h1.php会有:

font_size
font_size_units

我可以在该循环中打印出两个文件,但h1.php文件包含button sub_fields值,所以:

button_text
button_link
font_size
font_size_units

如何通过父数组拆分文件,然后打印出每个组的文件及其各自的sub_fields值?

1 个答案:

答案 0 :(得分:0)

想出来......需要一个额外的grouped数组来按照嵌套数组中的键对元素进行分组,在我的案例$sub['label']中。

这不是很优雅,也不是最优雅,但它有效。

<?php

$field_groups = acf_get_field_groups();

foreach( $field_groups as $field_group ) { 

    $acf_groups = acf_get_fields_by_id( $field_group['ID'] );

    $grouped = array();
    foreach ($acf_groups as $group) {
        $subs = $group['sub_fields'];

        foreach($subs as $sub) {
           $grouped[$group['label']][] = $sub['label'];
        }

        foreach ($grouped as $key => $items) {

            // print by group here.

        }

    }

}