我有一个多维数组,如:
$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
的值field_special_features5_value
?
由于
答案 0 :(得分: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;
答案 1 :(得分: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);
?>
答案 2 :(得分: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');
答案 3 :(得分:0)
您的问题是,在搜索阵列之前,您首先拥有顶级索引。因此,要访问该值,您需要执行此操作:
$tmp = $fields[1]['field_special_features5_value'];
答案 4 :(得分: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;
}
?>