我試圖在分析與點創建動態多維數組
$string = "foo.bar.baz";
$value = 5
分隔的字符串
$arr['foo']['bar']['baz'] = 5;
創建一個數組我分析的按鍵與
$keys = explode(".",$string);
如何我可以這樣做嗎?
我試圖在分析與點創建動態多維數組
$string = "foo.bar.baz";
$value = 5
分隔的字符串
$arr['foo']['bar']['baz'] = 5;
創建一個數組我分析的按鍵與
$keys = explode(".",$string);
如何我可以這樣做嗎?
你可以這樣做:
$keys = explode(".",$string);
$last = array_pop($keys);
$array = array();
$current = &$array;
foreach($keys as $key) {
$current[$key] = array();
$current = &$current[$key];
}
$current[$last] = $value;
您可以輕鬆地做出來,如果這一個函數,將字符串值作爲參數和返回數組。
您可以嘗試以下解決方案:
function arrayByString($path, $value) {
$keys = array_reverse(explode(".",$path));
foreach ($keys as $key) {
$value = array($key => $value);
}
return $value;
}
$result = arrayByString("foo.bar.baz", 5);
/*
array(1) {
["foo"]=>
array(1) {
["bar"]=>
array(1) {
["baz"]=>
int(5)
}
}
}
*/
有趣的方法+1 –
這是主題相關的問題,你可以找到答案,在這裏:
PHP One level deeper in array each loop made
你只需要更改代碼一點點:
$a = explode('.', "foo.bar.baz");
$b = array();
$c =& $b;
foreach ($a as $k) {
$c[$k] = array();
$c =& $c[$k];
}
$c = 5;
print_r($b);
總是有3個鍵或任何數字? – Toto
它必須與任何編號 –