$ar = array (
0 =>
array (
'id' => '1',
'title' => '一级菜单AA',
'pid' => '0',
'sort' => '10',
'ptitle' => '--',
),
1 =>
array (
'id' => '5',
'title' => '一级菜单BB',
'pid' => '0',
'sort' => '50',
'ptitle' => '--',
),
2 =>
array (
'id' => '2',
'title' => '二级菜单a1',
'pid' => '1',
'sort' => '20',
'ptitle' => '--',
),
3 =>
array (
'id' => '3',
'title' => '二级菜单a2',
'pid' => '1',
'sort' => '30',
'ptitle' => '--',
),
4 =>
array (
'id' => '4',
'title' => '二级菜单b1',
'pid' => '1',
'sort' => '60',
'ptitle' => '--',
),
5 =>
array (
'id' => '6',
'title' => '二级菜单b2',
'pid' => '5',
'sort' => '40',
'ptitle' => '--',
),
);
foreach($ar as $v) $sort[] = $v['sort'];
array_multisort($sort, $ar);
$res = array();
foreach(array_filter($ar, create_function('$a', "return \$a['pid'] == '0';")) as $x) {
$res[] = $x;
foreach(array_filter($ar, create_function('$a', "return \$a['pid'] == '$x[id]';")) as $y) {
$y['ptitle'] = $x['title'];
$res[] = $y;
}
}
print_r($res);Array
(
[0] => Array
(
[id] => 1
[title] => 一级菜单AA
[pid] => 0
[sort] => 10
[ptitle] => --
) [1] => Array
(
[id] => 2
[title] => 二级菜单a1
[pid] => 1
[sort] => 20
[ptitle] => 一级菜单AA
) [2] => Array
(
[id] => 3
[title] => 二级菜单a2
[pid] => 1
[sort] => 30
[ptitle] => 一级菜单AA
) [3] => Array
(
[id] => 4
[title] => 二级菜单b1
[pid] => 1
[sort] => 60
[ptitle] => 一级菜单AA
) [4] => Array
(
[id] => 5
[title] => 一级菜单BB
[pid] => 0
[sort] => 50
[ptitle] => --
) [5] => Array
(
[id] => 6
[title] => 二级菜单b2
[pid] => 5
[sort] => 40
[ptitle] => 一级菜单BB
))
0 =>
array (
'id' => '1',
'title' => '一级菜单AA',
'pid' => '0',
'sort' => '10',
'ptitle' => '--',
),
1 =>
array (
'id' => '5',
'title' => '一级菜单BB',
'pid' => '0',
'sort' => '50',
'ptitle' => '--',
),
2 =>
array (
'id' => '2',
'title' => '二级菜单a1',
'pid' => '1',
'sort' => '20',
'ptitle' => '--',
),
3 =>
array (
'id' => '3',
'title' => '二级菜单a2',
'pid' => '1',
'sort' => '30',
'ptitle' => '--',
),
4 =>
array (
'id' => '4',
'title' => '二级菜单b1',
'pid' => '1',
'sort' => '60',
'ptitle' => '--',
),
5 =>
array (
'id' => '6',
'title' => '二级菜单b2',
'pid' => '5',
'sort' => '40',
'ptitle' => '--',
),
);
foreach($ar as $v) $sort[] = $v['sort'];
array_multisort($sort, $ar);
$res = array();
foreach(array_filter($ar, create_function('$a', "return \$a['pid'] == '0';")) as $x) {
$res[] = $x;
foreach(array_filter($ar, create_function('$a', "return \$a['pid'] == '$x[id]';")) as $y) {
$y['ptitle'] = $x['title'];
$res[] = $y;
}
}
print_r($res);Array
(
[0] => Array
(
[id] => 1
[title] => 一级菜单AA
[pid] => 0
[sort] => 10
[ptitle] => --
) [1] => Array
(
[id] => 2
[title] => 二级菜单a1
[pid] => 1
[sort] => 20
[ptitle] => 一级菜单AA
) [2] => Array
(
[id] => 3
[title] => 二级菜单a2
[pid] => 1
[sort] => 30
[ptitle] => 一级菜单AA
) [3] => Array
(
[id] => 4
[title] => 二级菜单b1
[pid] => 1
[sort] => 60
[ptitle] => 一级菜单AA
) [4] => Array
(
[id] => 5
[title] => 一级菜单BB
[pid] => 0
[sort] => 50
[ptitle] => --
) [5] => Array
(
[id] => 6
[title] => 二级菜单b2
[pid] => 5
[sort] => 40
[ptitle] => 一级菜单BB
))
如果直接用 sql 查询,得到这样的结果,是否更简单?
求sql语句