You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取关联数组的数组键?代码输出Array而非预期值求助

问题分析与解决

你的代码问题出在两个核心点:

  1. 多余的数组嵌套:get_post_meta() 默认返回的就是数组(第三个参数默认值为false),你额外用array()包裹返回值,导致$content、$media、$yt变成二维数组,输出时自然显示Array。
  2. 循环边界错误:$i <= $max会让循环多执行一次,容易触发数组越界问题,应该改成$i < $max。

修正后的代码

// 去掉多余的array()包裹,直接接收get_post_meta的返回值
$content = get_post_meta($postId, 'content');
$media = get_post_meta($postId, 'media');
$yt = get_post_meta($postId, 'youtube');

// 取三个数组的最大长度,循环时用小于号避免越界
$max = max(count($content), count($media), count($yt));
$combined = [];

for($i = 0; $i < $max; $i++) {
    if(isset($content[$i])) {
        $combined[] = ["type" => "content", "value" => $content[$i]];
    }
    if(isset($media[$i])) {
        $combined[] = ["type" => "media", "value" => $media[$i]];
    }
    if(isset($yt[$i])) {
        $combined[] = ["type" => "youtube", "value" => $yt[$i]];
    }
}

foreach ($combined as $key => $val) {
    echo '<li>'.$val['value'].'</li>';
}

补充优化方案

如果你的自定义字段是单值(非多值),可以给get_post_meta()传第三个参数true,直接获取字符串值,代码会更简洁:

$content = get_post_meta($postId, 'content', true);
$media = get_post_meta($postId, 'media', true);
$yt = get_post_meta($postId, 'youtube', true);

$combined = [
    ["type" => "content", "value" => $content],
    ["type" => "media", "value" => $media],
    ["type" => "youtube", "value" => $yt]
];

foreach ($combined as $val) {
    echo '<li>'.$val['value'].'</li>';
}

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:45:28