我尝试在爆炸后找到一个构建多维数组的函数。
例如: 这里我用爆炸创建数组。
$str = 'root/foo/bar/file.jpg';
$ar = explode('/', $str);
$ ar => array('root','foo','bar','file.jpg');
然后我想要这个输出:
array(3) {
['root']=>
['foo']=>
['bar']=> "file.jpg"
}
任何想法?
THX
答案 0 :(得分:1)
以下是解决此问题的一种方法。
<?php
$str = 'root/foo/bar/file.jpg';
$parts = explode("/", $str);
$leaf = array_pop($parts);
$tree = array();
$branch = &$tree;
foreach($parts as $v){
$branch[$v] = array();
$branch = &$branch[$v];
}
$branch = $leaf;
print_r($tree);
亲自试用here
答案 1 :(得分:0)
<?php
$str = 'root/foo/bar/file.jpg';
//Get last part of the filename
$parts = explode('/', $str);
$last = array_pop($parts);
$arr = [];
//Create code as string to fill in array
$codeParts = implode("']['", $parts);
$codeEx = "\$arr['{$codeParts}'] = \$last;";
eval($codeEx);
var_dump($arr);
输出:
array(1) {
["root"]=>
array(1) {
["foo"]=>
array(1) {
["bar"]=>
string(8) "file.jpg"
}
}
}