【发布时间】:2019-02-26 16:22:12
【问题描述】:
我有一个大问题(显然很容易解决),我已经尝试了超过 24 小时来创建一个函数来将数组转换为具有深度的多维。
我的数组是
$array = array(
array("name" => "Root_1", "depth"=> "1"),
array("name" => "Children","depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children","depth"=> "3"),
array("name" => "Children","depth"=> "3"),
array("name" => "Children","depth"=> "3"),
array("name" => "Root_2", "depth"=> "1"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2")
)
我希望输出是:
$array = array(
array("name" => "Root_1", "depth"=> "1", "children" => array(
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array(
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array())
)
)),
array("name" => "Root_2", "depth"=> "1", "children" => array(
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array(
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array())
)
)),
);
我尝试过的:
<?php
function createArray($array, $depth) {
$result = array();
$item = array();
if(isset($array["depth"])) {
if(intval($array["depth"]) >= $depth) {
array_push($result, $array);
}
} else {
foreach($array as $value) {
$depthToInt = intval($value["depth"]);
if($depthToInt === $depth) {
array_push($result, $value);
$item = $value;
} else {
$item["children"] = createArray($value, $item["depth"]);
}
}
}
return $result;
}
【问题讨论】:
-
您能告诉我们您在过去 24 小时内尝试了什么吗?
-
@ChinLeung 我仍在尝试调整代码:ideone.com/YhgxdI
-
从您想要的输出中,我假设所有
depth => 2都是Root_1和Root_2的孩子。但是如何区分哪些“深度 2 的孩子”被分配了“深度 3 的孩子”?