【问题标题】:Dynamic multidimensional array keys for class property类属性的动态多维数组键
【发布时间】:2015-06-23 06:44:10
【问题描述】:

是否可以使用在数组中定义的键来创建多维数组?是的,根据一堆堆栈溢出的答案。这是一个: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 应该像insert_using_keys 函数一样将一个多维数组添加到$data 属性。

class A {

    protected $data = array();

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

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

    }

}

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

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

【问题讨论】:

  • “几乎可以工作”的示例代码在哪里?
  • @Stefan:代码没有“几乎可以工作”。我只能递归地设置键。如果您认为这对问题有帮助,我可以重新创建它。

标签: php arrays oop multidimensional-array


【解决方案1】:

在重新创建“key-setter”功能的过程中,我能够回答我自己的问题(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;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2020-04-30
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多