类属性

时间:2015-06-23 06:44:10

标签: php arrays oop multidimensional-array

是否可以使用在数组中定义的键创建多维数组?是的,根据一堆Stack Overflow的答案,它是。这是一个:Dynamic array keys

function insert_using_keys($arr, array $path, $value) { // See linked answer }
$arr = create_multi_array($arr, array('a', 'b', 'c'), 'yay'));
print_r($arr);

打印

Array ( [a] => Array ( [b] => Array ( [c] => yay ) ) ) 

类属性是否可以这样做?

这是我的Collection类的准系统版本。方法set_at应该以与$data函数相同的方式向insert_using_keys属性添加多维数组。

class A {

    protected $data = array();

    public function set($key, $value) {
         $this->data[$key] = $value;
    }

    public function set_at(array $keys, $value) {

    }

}

我已尝试对insert_using_keys进行多次修改但无济于事。我能够将键设置为属性,但不能将值“分配给最后一个”。

有人会指出我正确的方向吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

在重新创建“钥匙制定者”功能的过程中,我能够回答我自己的问题(一直是你的意图,Stefan?)。

以下是代码:

public function set_at(array $keys, $value) {

    $first_key = array_shift($keys);

    foreach (array_reverse($keys) as $key) {
        $value = array($key => $value);
    }

    $this->data[$first_key] = $value;

}