表排序多維數組的值的關鍵
cat_id | cat_parent_id | cat_name
---------------------------------
12 | 0 | Car
13 | 0 | Manga
14 | 12 | Volvo
15 | 12 | Mercedes-Benz
16 | 13 | Naruto
17 | 13 | Hunter X Hunter
18 | 0 | Animals
我試着去得到DB中的類別,並把它在一個數組,然後使用後陣列構建代碼的下降下拉列表。這是代碼BELOW。
while($row = dbFetchArray($result)) {
list($id, $parentId, $name) = $row;
if ($parentId == 0) {
// we create a new array for each top level categories
$categories[$id] = array('id' => $id, 'name' => $name, 'children' => array());
} else {
// the child categories are put int the parent category's array
$categories[$parentId]['children'][] = array('id' => $id, 'name' => $name);
}
}
$list = '';
foreach ($categories as $key => $value) {
$name = "--" . strtoupper($value['name']) . "--";
$children = $value['children'];
$list .="<option value=\"{$value['id']}\"";
if ($value['id'] == $catId) {
$list.= " selected";
}
$list .= ">$name</option>\r\n";
foreach ($children as $child) {
$list .= "<option value=\"{$child['id']}\"";
if ($child['id'] == $catId) {
$list.= " selected";
}
$list .= ">{$child['name']}</option>\r\n";
}
}
的$類別陣列
Array
(
[12] => Array
(
[id] => 12
[name] => Car
[children] => Array
(
[0] => Array
(
[id] => 14
[name] => Volvo
)
[1] => Array
(
[id] => 15
[name] => Mercedez-Benz
)
)
)
[13] => Array
(
[id] => 13
[name] => Manga
[children] => Array
(
[0] => Array
(
[id] => 16
[name] => Naruto
)
[1] => Array
(
[id] => 17
[name] => Hunter X Hunter
)
)
)
[18] => Array
(
[id] => 18
[name] => Animals
[children] => Array
(
)
)
)
最終價值,但我想通過密鑰 '名' 的值進行排序$類別。
我嘗試了很多次,到目前爲止,這是我的解決方案。
function sortByName($a, $b) {
return strcmp($a["name"], $b["name"]);
}
usort($categories,"sortByName");
foreach($categories as $k => $v){
foreach($v as $kk => $vv) {
if ($kk == "children") {
usort($vv,"sortByName");
print_r($vv);
}
}
}
我的問題是,即使是第一個級別鍵「名」排序很好,但我的解決方案進行排序第二級沒有工作。
並且當排序發生陣列我整理成爲
像例如當我排序這由密鑰「名稱」的值18 12 13將成爲索引0 1 2
Array(
[18] => Array
(
[id] => 18
[name] => aa
)
[12] => Array
(
[id] => 12
[name] => Car
)
[13] => Array
(
[id] => 13
[name] => Manga
)
)
我該怎麼排序,但我也想要18 12 13沒有改變?
,所以我想我的$類別陣列是這個
Array
(
[18] => Array
(
[id] => 18
[name] => Animals
[children] => Array
(
)
)
[12] => Array
(
[id] => 12
[name] => Car
[children] => Array
(
[0] => Array
(
[id] => 15
[name] => Mercedes-Benz
)
[1] => Array
(
[id] => 14
[name] => Volvo
)
)
)
[13] => Array
(
[id] => 13
[name] => Manga
[children] => Array
(
[0] => Array
(
[id] => 17
[name] => Hunter X Hunter
)
[1] => Array
(
[id] => 16
[name] => Naruto
)
)
)
)
0123很確定我今天早上從這個人那回答了這個問題了。 – NappingRabbit
先閱讀我的問題,我對您的第一個問題與 –