使用PHP将数组值嵌套到数组中

时间:2015-08-05 12:26:48

标签: php arrays

我试图找出如何将索引数组的值用作另一个数组的路径。我将字符串爆炸为数组,并根据该数组中的所有值,我在另一个数组中查找值。

示例:

$haystack['my']['string']['is']['nested'] = 'Hello';
$var = 'my@string@is@nested';
$items = explode('@', $var);

// .. echo $haystack[... items..?]

值的数量可能会有所不同,因此不能只选择$haystack[$items[0][$items[1][$items[2][$items[3]]

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以使用循环来抓取每个后续​​嵌套数组。即:

$haystack['my']['string']['is']['nested'] = 'Hello';
$var = 'my@string@is@nested';
$items = explode('@', $var);
$val = $haystack;
foreach($items as $key){
    $val = $val[$key];
}
echo $val;

请注意,这不会检查,您可能希望检查$val[$key]是否存在。

此处示例:http://codepad.org/5ei9xS91

答案 1 :(得分:2)

您可以使用循环 -

$haystack['my']['string']['is']['nested'] = 'Hello';
$var = 'my@string@is@nested';
$items = explode('@', $var);

$temp = $haystack;
foreach($items as $v) {
    $temp = $temp[$v]; // Store the current array value
}
echo $temp;

DEMO

答案 2 :(得分:2)

或者您可以使用递归函数:

function extractValue($array, $keys)
{
    return empty($keys) ? $array : extractValue($array[array_shift($keys)], $keys) ; 
}

$haystack = array('my' => array('string' => array('is' => array('nested' => 'hello'))));
echo extractValue($haystack, explode('@', 'my@string@is@nested'));