在多维数组中,我尝试获取搜索元素的密钥数组。例如,我的初始数组是:
$f['Kitchen']['Dishes']['Mantovarka']=3;
$f['Kitchen']['Dishes']['Castrool']=91;
$f['Kitchen']['Dishes']['Separator']=10;
$f['Kitchen']['Product']=18;
$f['Kitchen']['Textile']=19;
$f['Kitchen']['Blue things One']['Juicemaker']=25;
$f['Kitchen']['Blue things One']['Freegener']=13;
$f['Kitchen']['Blue things']['Microwave']=4;
$f['Kitchen']['Blue things']['Iron']=24;如果我尝试用这个函数获取“Separator”键的键数组:
$index=0; $array =[];
function getArrayOfkeys($needle, $haystack,$original,$array,$index) {
$index++;
$exists = false;
if(is_array($haystack)){
foreach ($haystack as $key => $val) {
$array[$index]=$key;
if($key == $needle){
$exists = true;
break;
}elseif(is_array($val)){
return getArrayOfkeys($needle, $val,$original,$array,$index);
}
}
}else{
$index--;
}
if($exists==true){
return $array;
}
else{
// I need here logic!!!
}
}它还我:
[
1 => 'Kitchen'
2 => 'Dishes'
3 => 'Separator'
]这很好!
但是当我试图得到“果汁制造者”、“铁”或“产品”的一系列键时。它不能工作,因为我不能在元素后面调用getArrayOfkeys()函数:
$f['Kitchen']['Dishes']['Separator']=10;我想要得到‘果汁制造者’的钥匙['Kitchen', 'Blue things One', 'Juicemaker']。
用于“产品”键['Kitchen','Product']。
用于“铁”键['Kitchen', 'Blue things','Iron']
发布于 2016-07-05 07:09:15
请试用此功能:
function findKeyPath($arr, $key, $path = '') {
foreach($arr as $k => $value) {
if(is_array($arr[$k])) {
$ret = findKeyPath($arr[$k], $key, $path.$k.',');
if(is_array($ret)) {
return $ret;
}
}else if($k == $key) {
return explode(',', $path.$key);
}
}
return null;
}
print_r(findKeyPath($f, 'Juicemaker'));
//Output: Array ( [0] => Kitchen [1] => Blue things One2 [2] => Juicemaker )我希望这能帮到你。
https://stackoverflow.com/questions/38196304
复制相似问题