1

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

$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 手册中的每个数组函数,但似乎找不到能满足这个目的的东西。我在这里完全忽略了一些基本的东西吗?也许一些花括号魔术?

4

1 回答 1

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));
于 2013-07-26T18:59:20.833 回答