PHP - 如何将数组键存储在数组中,并使用它来稍后访问该值

时间:2014-07-02 13:57:58

标签: php

我想保存一系列密钥,并像使用索引一样将其用于返回 原始数组中的对应值。这是一个例子来说明。

$myArray = array("foo" => array("bar" => "Hello"));

手动方式到达"你好"会是

$helloString = $myArray["foo"]["bar"];

但是我希望有一种灵活的方法来为具有N个键的数组执行此操作

之类的东西
$keys = array("foo","bar");
$helloString = $myArray[$keys];  //doesn't work but hopefully shows my intent

有没有办法在不使用eval()的情况下执行此操作?

3 个答案:

答案 0 :(得分:1)

我想你可以这样做:

<?php                                                                                                                                                                                                      
$myArray = array("foo" => array("bar" => "Hello"));                                                                                                                                                        
$keys = array("foo","bar");                                                                                                                                                                                

$item = $myArray;                                                                                                                                                                                          
foreach($keys as $k) {                                                                                                                                                                                     
    $item = $item[$k];                                                                                                                                                                                     
}                                                                                                                                                                                                                                                                                                                                                                                                                     
echo $item; //Hello                                                                                                                                                                                            
?>

或者将其粘贴在一个函数中:

function getValue($array, $keys) {                                                                                                                                                                                                                                                                                                                                                            
    foreach($keys as $k)                                                                                                                                                                               
        $array = $array[$k];                                                                                                                                                                                 

    return $array;                                                                                                                                                                                          
}

答案 1 :(得分:0)

不要理解,但尝试:

$keys = array("foo","bar");
$helloString = $myArray[$keys[0]][$keys[1]];

答案 2 :(得分:0)

你甚至可以尝试这个

$myArray = array("foo" => array("bar" => "Hello"));                                                                                                                                                        
$keys = array("foo","bar");
function getval($myArray, $keys){
        $temp = $myArray[$keys[0]];
        if(!is_array($temp)){
            return $temp;
        }
        else
        {
            array_splice($keys,0,1);
            return getval($temp, $keys);
        }
}

//Here you go 
echo getval($myArray, $keys);