【发布时间】:2021-07-19 22:18:56
【问题描述】:
解决方案
感谢@El_Vanja
if ($WPArray[0]['acf']['actor_reels']) {
$actor_reels = array_column($WPArray[0]['acf']['actor_reels'], 'actor_reel_category');
foreach ($actor_reels as $actor_reel) {
echo $actor_reel[0];
}}
原始问题
我有以下代码返回一个数组:
$WPArray = json_decode("$WPVars", true);
$output = $WPArray[0]['acf']['actor_reels'];
print_r($output);
返回:
Array (
[0] => Array (
[actor_reel_name] => Voice Reel
[actor_reel_category] => Array (
[0] => Voicereel
)
[actor_reel_url] => www.example.com
[actor_reel_image] => www.example.com
)
[1] => Array (
[actor_reel_name] => Show Reel
[actor_reel_category] => Array (
[0] => Showreel
)
[actor_reel_url] => www.example.com
[actor_reel_image] => www.example.com
)
)
我的脚本的下一部分是能够将“Voicereel”和“Showreel”值放入一个新数组(假设它称为 $actor_reel_cats),以便它们可以在 foreach 的其他地方使用声明,每个actor_reel_category 最终都会在网页上显示为一个按钮。
<?php foreach($actor_reel_cats as $reel_cat): ?>
<div class="f_btn">
<label><input type="radio" name="fl_radio" value="<?= $reel_cat ?>" />
<?= $reel_cat ?>
</label>
</div>
<?php endforeach; ?>
actor_reel_category 值是完全动态的,可以随时添加列表,例如,下一个数组[2] 可能有[actor_reel_category] => Dance Reels(或任何其他值,因为它们可以由最终用户自定义)所以我有点难过。
高级自定义字段人员的注意事项:此脚本在 WordPress 之外,因此我无法使用您通常使用的任何功能,例如 get_field_object(),除非我要导入/重新创建或复制它们.
另外,我是 StackOverflow 的新手,如果我在此处的帮助请求中出现任何异常,我们深表歉意。
TIA
【问题讨论】:
-
该数组的结构是否保证看起来像那样?如果是这样,这里就不需要递归了。您可能想查看
array_column以帮助您完成任务。 -
您应该将其发布为答案(可以在 SO 上回答您自己的问题),然后删除该编辑。问题中的解决方案编辑更难发现 + 问题未在列表中显示为已回答,并且在有人过滤已回答问题时不会显示。
标签: php arrays json advanced-custom-fields acfpro