PHP在分解函数后构建多维数组

PHP在分解函数后构建多维数组,php,multidimensional-array,Php,Multidimensional Array,我试图找到一个函数,它在爆炸后构建多维数组 例如: 在这里,我使用as explode创建数组 $str = 'root/foo/bar/file.jpg'; $ar = explode('/', $str); $ar=>array('root','foo','bar','file.jpg') 那么我要这个输出: array(3) { ['root']=> ['foo']=> ['bar']=> "file.jpg" } 有什么想法吗

我试图找到一个函数,它在爆炸后构建多维数组

例如: 在这里,我使用as explode创建数组

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

那么我要这个输出:

array(3) {
  ['root']=>
       ['foo']=>
           ['bar']=> "file.jpg"
}
有什么想法吗


Thx

这里有一种解决这个问题的方法

<?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);

爆炸不是这样工作的。它接受一个字符串并生成一个包含多个条目的数组,这些条目表示分解的内容的各个部分。它不会为您“下降”。@MarcB是正确的,一旦您分解字符串,您将使用单个数组结束,并且要使其多维化,您必须编写自己的函数。不过,如果您希望继续使用该选项,我们将非常乐意在此过程中为您提供帮助。我知道explode是如何工作的,但我正在寻找一个函数,该函数在多维数组中转换一个简单数组,每个键都是前一个数组值。虽然创造性地使用eval可能是一个不好的主意,但使用这个精确的代码,我看不出这有什么害处。如果OP无法控制要分解的字符串,或者有更多信息,那么肯定会导致问题。可以使用有关eval危险性的链接。如果不使用eval,除了不需要额外的开销来为数组元素赋值外,其他原因如何?如果eval()是答案,那么您几乎肯定问错了问题。-拉斯穆斯·勒多夫,PHP的BDFL
@Orangepill我完全同意。但我没有写问题。我很喜欢你的答案,但我猜你有点打字错误<代码>$branch[$v]=$leaf应该是
$branch=$leaf
@PHPhil Thank在3v4l链接中捕获并修复了它,但在答案中没有。
array(1) {
  ["root"]=>
  array(1) {
    ["foo"]=>
    array(1) {
      ["bar"]=>
      string(8) "file.jpg"
    }
  }
}
<?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);