【问题标题】:Recursively get specific values from three-dimensional array递归从三维数组中获取特定值
【发布时间】: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] =&gt; Dance Reels(或任何其他值,因为它们可以由最终用户自定义)所以我有点难过。

高级自定义字段人员的注意事项:此脚本在 WordPress 之外,因此我无法使用您通常使用的任何功能,例如 get_field_object(),除非我要导入/重新创建或复制它们.

另外,我是 StackOverflow 的新手,如果我在此处的帮助请求中出现任何异常,我们深表歉意。

TIA

【问题讨论】:

  • 该数组的结构是否保证看起来像那样?如果是这样,这里就不需要递归了。您可能想查看array_column 以帮助您完成任务。
  • 您应该将其发布为答案(可以在 SO 上回答您自己的问题),然后删除该编辑。问题中的解决方案编辑更难发现 + 问题未在列表中显示为已回答,并且在有人过滤已回答问题时不会显示。

标签: php arrays json advanced-custom-fields acfpro


【解决方案1】:

解决方案

感谢@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];
}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多