如何从多维数组特定列取深层值?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
相关产品推荐
相关产品推荐

