繁体   English   中英

PHP-通过多维数组中的键获取值

[英]PHP - Get the value by key in a multi-dimension array

我有一个多维数组,如:

$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;

如何获得键field_special_features5_value Special Function 5的值?

谢谢

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;

如果您知道它在$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);
?>

您需要搜索递归:

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');

您的问题是,在搜索数组之前,首先要有一个顶级索引。 因此,要访问该值,您需要执行以下操作:

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

您可以使用像这样的递归函数来做到这一点

<?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;
 }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM