【发布时间】:2015-03-01 19:06:06
【问题描述】:
我目前正在使用这种方法通过键+值来查找数组:
public static function getCountryDataByVal($array, $key, $value, &$results = array()) {
if (!is_array($array)) {
return;
}
if (isset($array[$key]) && $array[$key] == $value) {
$results[] = $array;
}
foreach ($array as $subarray) {
self::getCountryDataByVal($subarray, $key, $value, $results);
}
return $results;
}
到目前为止,这工作正常,但有一个问题,我不知道如何解决它。让我们假设,我有这个数组结构:
array(8) {
["alpha2"]=>
string(2) "ad"
["alpha3"]=>
string(3) "and"
["numeric3"]=>
string(3) "020"
["callingCodes"]=>
array(1) {
[0]=>
string(3) "376"
}
["tlds"]=>
array(1) {
[0]=>
string(2) "ad"
}
["currencies"]=>
array(1) {
[0]=>
string(3) "eur"
}
["longitude"]=>
string(4) "42.5"
["latitude"]=>
string(3) "1.5"
}
例如,我可以使用上面的方法通过alpha2 = ad 找到这个数组。但我需要的是搜索eur IN currencies 的可能性。
使用这个不起作用:
getCountryDataByVal($array, 'currencies', 'eur');
因为eur 不是键currencies 的值,而是子键的值。
任何想法,我必须如何扩展上述方法来实现这一点?
【问题讨论】:
-
getCountryDataByVal($array['currencies'], 'eur'); ? :p
-
php.net/manual/en/function.array-search.php#91365 似乎是一个不错的递归 array_search 函数
-
getCountryDataByVal($array['currencies'], 'eur');不起作用,您链接的功能不符合我的需求。
-
array_search('eur',$array['currencies']) ?
标签: php arrays recursion multidimensional-array