Php 基于子值检索子数组

Php 基于子值检索子数组,php,arrays,sub-array,Php,Arrays,Sub Array,好的,我有一个如下的数组: $countries = array(); $countries['CA'] = array('name'=>'Canada','currency'=>array('code'=>'CAD','format'=>'$#')); $countries['US'] = array('name'=>'USA','currency'=>array('code'=>'USD','format'=>'$#')); $countri

好的,我有一个如下的数组:

$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”子数组


编辑:对不起,我需要它旁边的“格式”。

您可以使用
array\u filter
从数组中仅返回与您要查找的代码匹配的值:

$code = 'ARS';
$results = array_filter($countries, function($country) use ($code) {
    return $country['currency']['code'] == $code;
});
$found_country = null;
foreach ($countries as $country) {
    if ($country['currency']['code'] == $code) {
        $found_country = $country;
        break;        
    }
}
$results
将是一个包含零个或多个元素的数组,具体取决于找到的匹配项的数量。对于您问题中的示例数组,这将是:

array(array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#')));
您可以循环查看结果,或者使用
$country=reset($results)获取第一个结果
如果没有与您的代码匹配的国家/地区,则返回
false

如果您最多只希望有一个匹配项,或者只希望获得第一个匹配项,那么您可以在找到要查找的内容后,在数组上循环并
break

$code = 'ARS';
$results = array_filter($countries, function($country) use ($code) {
    return $country['currency']['code'] == $code;
});
$found_country = null;
foreach ($countries as $country) {
    if ($country['currency']['code'] == $code) {
        $found_country = $country;
        break;        
    }
}

在数组中循环,直到找到为止。谢谢,第二个foreach代码完成了这个任务:)非常感谢!