一尘不染

动态阵列键

php

我有一个像这样的字符串:

$string = 'one/two/three/four';

我把它变成一个数组:

$keys = explode('/', $string);

该数组可以具有任意数量的元素,例如1、2、5等。

如何为多维数组分配一个特定的值,但是如何使用$keys上面创建的I标识要插入的位置?

喜欢:

$arr['one']['two']['three']['four'] = 'value';

抱歉,这个问题令人困惑,但是我不知道如何更好地解释它


阅读 308

收藏
2020-05-29

共1个答案

一尘不染

这是不平凡的,因为您想嵌套,但是应该这样:

function insert_using_keys($arr, $keys, $value){
    // we're modifying a copy of $arr, but here
    // we obtain a reference to it. we move the
    // reference in order to set the values.
    $a = &$arr;

    while( count($keys) > 0 ){
        // get next first key
        $k = array_shift($keys);

        // if $a isn't an array already, make it one
        if(!is_array($a)){
            $a = array();
        }

        // move the reference deeper
        $a = &$a[$k];
    }
    $a = $value;

    // return a copy of $arr with the value set
    return $arr;
}
2020-05-29