从另一个数组中的键获取多维数组值

时间:2013-07-26 18:49:24

标签: php

我有一个包含我希望用作键的值的数组,例如:

$keys = array("first", "second", "third", "fourth");

这些值的计数和内容将在循环内动态变化。我希望它们成为多维数组的键,但是键数组的计数总是会改变,所以虽然这可以用于第一组键:

$multidimensional[$keys[0]][$keys[1]][$keys[2]][$keys[3]] = "some value";

稍后在循环中,键可能是:

$keys = array("first", "second", "gamma", "delta", "theta", "kappa");

所以在循环中使用它:

$multidimensional[$keys[0]][$keys[1]][$keys[2]][$keys[3]] = "some value";

不起作用,并且需要根据键的数量来动态。

我已经浏览了PHP手册中的每个数组函数,似乎无法找到满足此目的的东西。我完全忽视了一些基本的东西吗?也许是一些大括号魔法?

1 个答案:

答案 0 :(得分:0)

你去......

function setMultidimensionalValue($value, array $keys, array $multidimensional)
{
  $node = &$multidimensional;
  foreach ($keys as $key)
  {
    if (!isset($node[$key]))
      $node[$key] = null;
    $node = &$node[$key];
  }
  $node = $value;
  return $multidimensional;
}

// Example of usage
$multidimensional = array();
var_dump(setMultidimensionalValue('value', array('first', 'second', 'third'), $multidimensional));