根据子子值检索子数组
retrieving sub array based on sub sub value
好的,所以我有一个如下所示的数组:
$countries = array();
$countries['CA'] = array('name'=>'Canada','currency'=>array('code'=>'CAD','format'=>'$#'));
$countries['US'] = array('name'=>'USA','currency'=>array('code'=>'USD','format'=>'$#'));
$countries['AR'] = array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#'));
$countries['AW'] = array('name'=>'Aruba','currency'=>array('code'=>'AWG','format'=>'ƒ#'));
如果我有值 "ARS",我将如何检索整个 "AW" 子数组?
编辑:抱歉,我需要旁边的 "format"。
您只能使用 array_filter
到 return 数组中与您要查找的代码匹配的值:
$code = 'ARS';
$results = array_filter($countries, function($country) use ($code) {
return $country['currency']['code'] == $code;
});
$results
将是一个包含零个或多个元素的数组,具体取决于找到的匹配项数。对于您问题中的示例数组,这将是:
array(array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#')));
您可以遍历结果,或者使用 $country = reset($results);
获取第一个结果,如果没有国家/地区与您的代码匹配,这将 return false
。
如果您最多只希望获得一个匹配项,或者只想获得第一个匹配项,那么您可以遍历数组并 break
一旦找到您要查找的内容:
$found_country = null;
foreach ($countries as $country) {
if ($country['currency']['code'] == $code) {
$found_country = $country;
break;
}
}
好的,所以我有一个如下所示的数组:
$countries = array();
$countries['CA'] = array('name'=>'Canada','currency'=>array('code'=>'CAD','format'=>'$#'));
$countries['US'] = array('name'=>'USA','currency'=>array('code'=>'USD','format'=>'$#'));
$countries['AR'] = array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#'));
$countries['AW'] = array('name'=>'Aruba','currency'=>array('code'=>'AWG','format'=>'ƒ#'));
如果我有值 "ARS",我将如何检索整个 "AW" 子数组?
编辑:抱歉,我需要旁边的 "format"。
您只能使用 array_filter
到 return 数组中与您要查找的代码匹配的值:
$code = 'ARS';
$results = array_filter($countries, function($country) use ($code) {
return $country['currency']['code'] == $code;
});
$results
将是一个包含零个或多个元素的数组,具体取决于找到的匹配项数。对于您问题中的示例数组,这将是:
array(array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#')));
您可以遍历结果,或者使用 $country = reset($results);
获取第一个结果,如果没有国家/地区与您的代码匹配,这将 return false
。
如果您最多只希望获得一个匹配项,或者只想获得第一个匹配项,那么您可以遍历数组并 break
一旦找到您要查找的内容:
$found_country = null;
foreach ($countries as $country) {
if ($country['currency']['code'] == $code) {
$found_country = $country;
break;
}
}