繁体   English   中英

遍历多维数组并为每个父数组写入文件

[英]Loop through multidimensional array and write to file for each parent 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数组(分别为'button'和'h1')输出一个带有sub_field值的文件。

因此,举例来说,在这种情况下,我想得到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值的文件?

弄清楚了...需要一个附加的grouped数组,以嵌套数组中的键对元素进行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.

        }

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM