树状结构中的PHP数组操作
我想用树状结构中的PHP数组操作,php,arrays,Php,Arrays,我想用Tree结构格式化数组,如PHP TITLE 1 -- SUB TITLE 1-1 ---- SUB TITLE 1-2 TITLE 2 -- SUB TITLE 2-1 数组结构: Array ( [0] => Array ( [id] => 1 [sub_id] => 1 [title] => TITLE 1 [url] => www.
Tree
结构格式化数组,如PHP
TITLE 1
-- SUB TITLE 1-1
---- SUB TITLE 1-2
TITLE 2
-- SUB TITLE 2-1
数组
结构:
Array
(
[0] => Array
(
[id] => 1
[sub_id] => 1
[title] => TITLE 1
[url] => www.title1.com
)
[1] => Array
(
[id] => 4
[sub_id] => 4
[title] => TITLE 2
[url] => www.title2.com
)
[2] => Array
(
[id] => 2
[sub_id] => 1
[title] => SUB TITLE 1-1
[url] => www.subtitle1.com
)
[3] => Array
(
[id] => 3
[sub_id] => 2
[title] => SUB TITLE 1-2
[url] => www.subtitle2.com
)
[4] => Array
(
[id] => 5
[sub_id] => 4
[title] => SUB TITLE 2-1
[url] => www.subtitle2.com
)
)
我不知道该怎么做。这是我的解决方案:
<?php
$data=Array
(
0 => Array
(
'id' => 1,
'sub_id' => 1,
'title' => 'TITLE 1',
'url' => 'www.title1.com',
),
1 => Array
(
'id' => 4,
'sub_id' => 4,
'title' => 'TITLE 2',
'url' => 'www.title2.com',
),
2 => Array
(
'id' => 2,
'sub_id' => 1,
'title' => 'SUB TITLE 1-1',
'url' => 'www.subtitle1.com',
),
3 => Array
(
'id' => 3,
'sub_id' => 2,
'title' => 'SUB TITLE 1-2',
'url' => 'www.subtitle2.com',
),
4 => Array
(
'id' => 5,
'sub_id' => 4,
'title' => 'SUB TITLE 2-1',
'url' => 'www.subtitle2.com',
),
);
function find_index(&$arr, $ind){
if(empty($arr))
return false;
else {
foreach($arr as &$aa){
if($aa['id']==$ind['sub_id']) {
$key=count($aa['sub_ar']);
$aa['sub_ar'][$key]=$ind;
$aa['sub_ar'][$key]['sub_ar']=array();
return true;
}
else{
$res=find_index($aa['sub_ar'],$ind);
if($res)
return true;
}
}
return false;
}
}
$res=array();
foreach($data as $key=>$dat){
if($dat['sub_id']==$dat['id']){
$res[$key]=$dat;
$res[$key]['sub_ar']=array();
}
else {
$ret=find_index($res,$dat);
}
}
?>
<pre><?php print_r($res); ?></pre>
您应该有一个递归函数,用于获取每个元素的数组并查找其子元素。现在还不清楚结果到底是什么。从这里开始想一想:我看过链接,但我的情况不同@你能解释一下格式吗?id
或sub\u id
值是否需要与数组键链接?非常感谢@坎乔·伊利耶夫,这对我有用…:)