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

如何从多维数组特定列取深层值?WP REST API数组循环异常排查

问题分析与解决办法

首先得说清楚你写的while循环为什么只输出一个结果:

你的while (list ($key, $val) = each ($myArray) )里的$key是外层多维数组的索引(也就是0和1),但你却用它去取内层email_do_convidado数组的元素。

  • 第一次循环时,$key=0,对应第一个子数组,$val['email_do_convidado'][0]刚好是第一个邮箱,能正常输出;
  • 第二次循环时,$key=1,但第二个子数组的email_do_convidado只有一个元素(索引为0),$val['email_do_convidado'][1]是不存在的(返回null),所以没有输出内容,最终你只看到第一个邮箱。

正确的实现方式

推荐用foreach循环遍历外层数组,直接取每个子数组里email_do_convidado的第一个元素(索引为0):

$myArray = [ 
    [ 'id' => 6, 'convite_id' => [4], 'nome_do_convidado' => 'John Doe', 'email_do_convidado' => ['johndoe@gmail.com', 'another@example'], ], 
    [ 'id' => 5, 'convite_id' => [4], 'nome_do_convidado' => 'Lorem', 'email_do_convidado' => ['lorem@gmail.com'], ], 
];

foreach ($myArray as $item) {
    echo $item['email_do_convidado'][0] . ' ';
}

这段代码会输出你想要的结果:johndoe@gmail.com lorem@gmail.com

更安全的写法(防止邮箱数组为空)

如果担心某些子数组的email_do_convidado是空数组,可以先做判断,再用reset()函数获取第一个元素(和索引0效果一致,但更严谨):

foreach ($myArray as $item) {
    if (!empty($item['email_do_convidado'])) {
        echo reset($item['email_do_convidado']) . ' ';
    }
}

内容的提问来源于stack exchange,提问作者Danilo P. da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:36:42