具有此递归函数($key
可以是array(0=>'value1',1=>'value2'
或string
为array('key1'=>'value1','key2'=>'value2')
),为$key
,
针和$array
haystack:
public function array_key_search($searched_key, $array = array()){
* @param $searched_key: Key to search.
* $array: Array with keys to check.
* Recursive method to check if a key exists in a multidemensional array.
* If key exists, it returns corresponding value.
*/
foreach($array as $key => $value){
$key = "$key";
if($key_value == false){
if($key == $searched_key){
return $value;
}else{
if(is_array($value)){
$key_value = self::array_key_search($searched_key, $value);
}
}
}
}
$key_value == is_null($key_value) ? false : $key_value;
return $key_value;
}
我可以使用if($key === $searched_key)
而不是调用我的$ key param作为比较字符串吗?
这次我谈论的是性能,因为这个功能有时很难处理。
答案 0 :(得分:0)
这就是你想要的
$arr = [
'key1' => [
'key1.1' => [
'key1.1.1' => 'key1.1.1',
'key1.1.2' => 'key1.1.2'
],
'key1.2' => [
'key1.2.1' => 'key1.2.1',
'key1.2.2' => 'key1.2.2'
],
],
'key2' => [
'key2.1' => [
'key2.1.1' => 'key2.1.1',
'key2.1.2' => 'key2.1.2'
]
]
];
function get_key_val($search_key, $arr){
foreach($arr as $key => $value){
if( is_array($value) ){
$result = get_key_val($search_key, $value);
if ($result){
return $result;
}
}else{
if ($search_key == $key){
return $value;
}
}
}
return null;
}
var_dump(get_key_val('key2.1.2', $arr));
RETURNS
string(8) "key2.1.2"