动态JSON参考

时间:2015-07-09 18:02:56

标签: php arrays json

我正在尝试引用此阵列中的主要电话号码

"phone":[{"label":"Fax","value":"234-345-5678","primary":false},{"label":"main","value":"456-234-2345","primary":false},{"label":"main","value":"456-456-4567","primary":true}]

我正在使用以下php:

"person_phone" => $phoneNumbers['phone'][2]['value'];

但是primary手机可能不是a中的第3个项目,所以有没有办法在决定引用它之前评估数组元素的"primary":true

2 个答案:

答案 0 :(得分:1)

你不能用一个简单的"来做到这一点。数组引用。 PHP的数组"路径"无法搜索,就好像你有XPath或其他什么东西一样。您必须在阵列上循环才能找到" primary"记录,然后访问该号码一旦找到:

foreach($records as $phone) {
   if ($phone['primary']) {
       return $phone['value'];
   }
}

答案 1 :(得分:1)

Array_reduce将返回此数组{"label":"main","value":"456-456-4567","primary":true}。而你可以采取任何价值,你需要

$val = array_reduce($arr['phone'], function ($c,$a) {  if($a["primary"]) $c = $a;  return $c;}, []);
echo $val['value'];