我有以下陣列結構:腓排序基於ID和PARENTID
| ID | CategoryName | ParentID
_________________________________
1 | Movies | -1
_________________________________
2 | Series | -1
_________________________________
3 | ActionMovies | 1
_________________________________
4 | HorrorMovies | 1
_________________________________
5 | ComedySeries | 2
_________________________________
6 | TVShows | -1
我的目標是達到以下結構
目標:
| ID | CategoryName | ParentID
_________________________________
1 | Movies | -1
_________________________________
3 | ActionMovies | 1
_________________________________
4 | HorrorMovies | 1
_________________________________
2 | Series | -1
_________________________________
5 | ComedySeries | 2
_________________________________
6 | TVShows | -1
或者用詞語解釋:
- 家長分類有
ParentID = -1
(例如:電影) - 所有類別保持其原有的ID-數
- 應該來他們ParentCategory(例ActionMovies)無子女
- RootCategories後直接上市,在年底前來上市數組。 (示例TVShows)
我該如何用PHP實現最佳效果?我原來的MySQL查詢進不去了,所以這是不是一種選擇:)
我已經開始使用此代碼,但我不知道這是正確的道路,並以最小的努力/可讀性
$tmpList = Categories_Models_Main::getAllCategories();
$categoryData = array();
foreach ($tmpList as $index => $categoryObject) {
$categoryData[] = array('id' => $categoryObject->id,
'CategoryName' => $categoryObject->parentId,
'name' => $categoryObject->name);
}
///let us assume $categoryData is original state.
///Beginning of manipulation and re-sorting of $tmpList
foreach ($categoryData as $key => $value) {
$mainId[$key] = $value['id'];
$parentId[$key] = $value['parentId'];
}
array_multisort($parentId, $mainId, $categoryData);
什麼樣的你有數組進行排序?如果你不喜歡用php的排序函數來處理,手動瀏覽數組並收集用於排序的字段,然後使用排序後的字段來完成整個事件,以正確的順序收集所有的值。 – Smar
謝謝你們,我編輯了我原來的帖子。 – Confidence