PHP在分解函数后构建多维数组
我试图找到一个函数,它在爆炸后构建多维数组 例如: 在这里,我使用as explode创建数组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" } 有什么想法吗
$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);