循环只返回数组中的一个值

时间:2018-01-18 13:42:58

标签: php arrays loops

我从array的{​​{1}}转换了以下JSON response

WP REST API

我正在尝试将Array ( [0] => Array ( [id] => 6 [convite_id] => Array ( [0] => 4 ) [nome_do_convidado] => John Doe [email_do_convidado] => Array ( [0] => johndoe@gmail.com ) ) [1] => Array ( [id] => 5 [convite_id] => Array ( [0] => 4 ) [nome_do_convidado] => Lorem [email_do_convidado] => Array ( [0] => lorem@gmail.com ) ) ) 值循环为:

  • johndoe@gmail.com
  • lorem@gmail.com

我尝试使用[email_do_convidado]循环并获取最后一个循环,现在我已尝试使用foreach()并获得一个结果,请按照我的脚本运行:

while()

结果是:

  • johndoe@gmail.com

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试使用foreach而不是一段时间。您可以通过将所有数组合并到最终输出中来提取所有电子邮件。

$emails = [];
foreach($myArray as $entry){
  $emails = array_merge($emails, $entry['email_do_convidado']);
}

var_dump($emails);

我假设你以后会想要做所有的电子邮件。我会把它留给你。

答案 1 :(得分:0)

它不太清楚,我理解的是你想要每个元素的第一封电子邮件,如果是这样的话,你可以这样做

foreach($array as $value){
    echo $value[email_do_convidado][0];
}

另一方面,如果你内部有几封电子邮件" email_do_convidado"你可以循环其他数组

foreach($array as $value){
    foreach($value[email_do_convidado] as $email){
        echo $email;
    }
}

或者,如果你不想在foreach中使用foreach,你可以

//inside the first foreach.
$emails = implode(',', $value[email_do_convidado]);
//and the u echo $emails
echo $emails;

希望我的回答能帮到你。

答案 2 :(得分:0)

您正在寻找的价值观是:

$myArray[0]['email_do_convidado'][0]
$myArray[1]['email_do_convidado'][0]

您的代码是:

while (list ($key, $val) = each ($myArray) ) {
   echo $val['email_do_convidado'][$key]; 
}

(略微修改为更好的风格)

因此您的代码正在尝试检索

$myArray[0]['email_do_convidado'][0]
$myArray[1]['email_do_convidado'][1]

后者不存在。所以我担心你在多个层面都失败了:

  • 您的代码不符合您的意图
  • 您的错误报告无效(PHP正在发出警告,您没有看到这个)
  • 您没有尝试检测代码以查看正在发生的事情(只需在echo语句中的值显示之前输入“email =”)。

尝试:

echo $val['email_do_convidado'][0];