2017-03-28 21 views
0

は、($keyarray('key1'=>'value1','key2'=>'value2')としてarray(0=>'value1',1=>'value2'またはstringとして数値であることができます)この再帰関数を持つ$keyされ、 針と$array干し草の山:再帰array_key_search機能ペソ

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)の代わりに使ってもよいです比較のための文字列としてのparam?

今回は、この機能を処理するのが難しい場合があるため、今回はパフ​​ォーマンスについて話しています。

答えて

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" 
+0

は、あなたの方法に同意するが、それは私が探している答えではないということはありません。とにかくありがとうございます! :) –

+0

@NachoNieva何をお探しですか? –