【发布时间】:2019-11-11 22:20:16
【问题描述】:
我有这个。关联数组
$array = [
'school' => [
'college' => [
'nursing' => ['n1a', 'n2a', 'n3a', 'n4a'],
'hrm' => ['h1a', 'h2a', 'h3a', 'h4a'],
'tourism' => ['t1a', 't2a', 't3a', 't4a'],
'it' => ['i1a', 'i2a', 'i3a', 'i4a'],
],
'senior' => [],
],
'business' => [
'office' => [
'dep1' => ['team1', 'team2'],
'dep2' => ['team1', 'team2'],
'dep3' => ['team1', 'team2'],
'dep4' => ['team1', 'team2'],
],
],
]
我有这段代码,但这只是搜索第一级数组。
function searchItemsByKey($array, $key) {
$results = array();
if (is_array($array))
{
if (isset($array[$key]) && key($array)==$key){
$results[] = $array[$key];
}
foreach ($array as $sub_array){
$results = array_merge($results, $this->searchItemsByKey($sub_array, $key));
}
}
return $results;
}
我想要的只是搜索此数组中的所有键,这将导致所有与键关联的数组,例如:
searchItemsByKey($array, 'hrm');
这将返回:
['h1a', 'h2a', 'h3a', 'h4a']
谢谢。
【问题讨论】:
-
为什么
key($array)==$key在if语句中?如果您删除它,我认为它会起作用。可以看这里:3v4l.org/27jHf -
尝试一个递归函数,它会深入你的数组,直到找到你想要的键
-
哦,这很快,谢谢队友@dWinder
-
会试试的,谢谢@MickaëlLeger
-
这里有一个很好的答案:stackoverflow.com/a/3975706/661872 - 耻辱不被接受