多维键阵推送

时间:2015-01-27 15:23:57

标签: php arrays

我拥有的是:

<?php

$keys = array('a', 'b', 'c', ..., ...);
$value = 'blah';

?>

我想要实现的目标是:

<?php

$someArr['a']['b']['c'][...][...] = $value;

?>

实现这一目标最明智的方法是什么?

//编辑

我不知道$ key中有多少元素,这就是我在那里添加点的原因

1 个答案:

答案 0 :(得分:1)

这要求递归:

<?php
function array_md_push($keys, &$pushto, $value) {
    if ($keys == array()) {                          // no keys left - put value
        $pushto = $value;
    } else {                                         // keys left - recursion!
        $key = array_shift($keys);                   // take the first element
        array_md_push($keys, $pushto[$key], $value); // call with one key less
    }
}

$keys = array('a', 'b', 'c');
$value = 'blah';
$pushto = array();

array_md_push($keys, $pushto, $value);

var_dump($pushto);
  

结果:

array(1) {
  ["a"]=>
  array(1) {
    ["b"]=>
    array(1) {
      ["c"]=>
      string(4) "blah"
    }
  }
}

array_md_push()将键作为第一个参数,将数值推送到第二个数组,将值作为第三个参数。如果keys数组为空,则只将值存储在要推送到的数组中。如果没有,它会调用自己,只需一个密钥,$pushto扩展到该密钥。