将值存储在多维数组的未知深度中

马雷克·特纳(Marek Teuchner)

我将这个死亡路径保存在某处:

Array
(
    [0] => library
    [1] => 1
    [2] => book
    [3] => 0
    [4] => title
    [5] => 1
)

我有一些数组,我想更改此索引上的值:

$values[library][1][book][0][title][1] = "new value";

我不知道如何执行此操作,因为可以有任意数量(未知)的尺寸。有什么提示吗?

斯维尔·奥尔森(Sverri M.Olsen)

创建执行此操作的函数很有意义,因此:

function array_path_set(array & $array, array $path, $newValue) {
    $aux =& $array;
    foreach ($path as $key) {
        if (isset($aux[$key])) {
            $aux =& $aux[$key];
        } else {
            return false;
        }
    }
    $aux = $newValue;
    return true;
}
$values = array(
    'library' => array(
        1 => array(
            'book' => array(
                0 => array(
                    'title' => array(
                        1 => 'MAGIC VALUE!',
                    ),
                ),
            ),
        ),
    ),
);
$path = array('library', 1, 'book', 0, 'title', 1);
$newValue = 'ANOTHER MAGIC VALUE!';

var_dump($values);
var_dump(array_path_set($values, $path, $newValue));
var_dump($values);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章