PHP爆炸功能后构建的多维数组

时间:2015-07-22 16:38:56

标签: php multidimensional-array

我尝试在爆炸后找到一个构建多维数组的函数。

例如: 这里我用爆炸创建数组。

$str = 'root/foo/bar/file.jpg';
$ar = explode('/', $str);

$ ar => array('root','foo','bar','file.jpg');

然后我想要这个输出:

array(3) {
  ['root']=>
       ['foo']=>
           ['bar']=> "file.jpg"
}

任何想法?

THX

2 个答案:

答案 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);

https://eval.in/403480

输出:

array(1) {
  ["root"]=>
  array(1) {
    ["foo"]=>
    array(1) {
      ["bar"]=>
      string(8) "file.jpg"
    }
  }
}