2012-03-23 33 views
1

にキーで値を取得します。私はキーで値を取得したいPHP - 私のような多次元配列持つ多次元配列

$fields = 
    Array (
     [1] => Array 
      (
       [field_special_features5_value] => Special Function 5 
      ) 

     [2] => Array 
      (
       [field_special_features6_value] => Special Function 6 
      ) 

     [3] => Array 
      (
       [field_opticalzoom_value] => Optical Zoom 
      ) 
    ) 

を、私は以下のコードを試みたが、

に動作しません
$tmp = array_search('field_special_features5_value' , $fields); 
echo $tmp; 

の値Special Function 5を取得するにはどうすればよいですか?あなたの配列であるか、またはあなたがわからない場合はどのインデックスで

おかげ

答えて

3

print $fields[1]['field_special_features5_value'];

、このような何か:

function GetKey($key, $search) 
{ 
    foreach ($search as $array) 
    { 
     if (array_key_exists($key, $array)) 
     { 
      return $array[$key]; 
     } 
    } 

    return false; 
} 

$tmp = GetKey('field_special_features5_value' , $fields); 
echo $tmp; 
0

あなたの問題は、あなたはトップレベルのインデックスを持っているということです最初に配列を検索する前に。だから、あなたがこれを行う必要があり、その値にアクセスします。

$tmp = $fields[1]['field_special_features5_value']; 
1

それは$fields配列のどこにあるかご存知の場合は、試してみてください。

$value = $fields[1]['field_special_features5_value']; 

をされていない場合は、試してみてください。

function getSubkey($key,$inArray) 
{ 
    for ($fields as $field) 
    { 
     $keys = array_keys($field); 
     if (isset($keys[$key])) return $keys[$key]; 
    } 

    return NULL; 
} 

このように使用してください:

<?php 
    $value = getSubkey("field_special_features5_value",$fields); 
?> 
0

あなたは再帰検索する必要がある。このように再帰関数で

<?php 

function multi_array_key_exists($needle, $haystack) { 
     foreach ($haystack as $key=>$value) { 
     if ($needle===$key) { 
      return $key; 
     } 
     if (is_array($value)) { 
      if(multi_array_key_exists($needle, $value)) { 
      return multi_array_key_exists($needle, $value); 
      } 
     } 
     } 
    return false; 
} 
?> 
+1

まあ、これは仕事ができる...しかし、なぜ使用再帰OPは配列が実際には未知数の「枝」を持つ木のような構造を表現しているのではなく、2次元のものであることを知っています...? –

+0

それはより柔軟な兄弟ですから!! – Harry

1

それを行うことができます実際にはオリジナルのポストがあることを意味するとき

function array_search_recursive(array $array, $key) { 
    foreach ($array as $k => $v) { 
     if (is_array($v)) { 
      if($found = array_search_recursive($v, $key)){ 
       return $found; 
      } 
     } elseif ($k == $key) { 
      return $v; 
     } else { 
      return false; 
     } 
    } 
} 

$result = array_search_recursive($fields, 'field_special_features5_value');