我正在循环遍历字段组和子字段的多维数组使用此代码:
<?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
值?
答案 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.
}
}
}