2015-06-23 17 views
0

是否可以使用在數組中定義的鍵創建多維數組?是的,根據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的幾個修改無濟於事。我能夠將鍵設置爲屬性,但不能將值賦給「最後一個」。

請問有人指我正確的方向嗎?提前致謝!

+0

哪裏是你的示例代碼「幾乎工作」? – Stefan

+0

@Stefan:代碼沒有「幾乎工作」。我只是能夠遞歸地設置鍵。如果你認爲這將有助於解決這個問題,我可以重新創建它。 –

回答

0

在重新創建「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; 

}