动态JSON引用


Dynamic JSON reference

我试图引用这个数组中的主电话号码

"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电话可能不是an中的第三个项目,因此在决定引用它之前是否有一种方法来计算数组元素的"primary":true

您不能通过单个"简单"数组引用来做到这一点。PHP的数组"路径"是不可搜索的,就像您有XPath或其他东西一样。您必须在数组中循环查找"主要"记录,然后访问找到的数字:

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

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'];