Bu (1) derinliğine göre nesneler dizisi ve (2) kilo sıralamak için çalışıyor, ve ben bu diğer düzeyini içerecek şekilde kullanıyorum işlevini değiştirmek için nasıl emin değilim ...
Ben bu işlevi kullanarak ediyorum:
function cmp( $a, $b ) {
if( $a->weight == $b->weight ){ return 0 ; }
return ($a->weight < $b->weight) ? -1 : 1;
}
Ve sonra bu yapıyor:
$menu = get_tree(4, $tid, -1, 2);
usort($menu, 'cmp');
Ve bu doğru ağırlığına göre sıralamak dizi olacak, ama sıralama başka bir seviyeye eklemek gerekir. Dizi ilk derinliğine göre sıralanır ve sonra ağırlığının böylece.
Böylece, orijinal dizi bu gibi görünüyor eğer:
Array
(
[0] => stdClass Object
(
[tid] => 24
[name] => Sample
[weight] => 3
[depth] => 0
)
[1] => stdClass Object
(
[tid] => 66
[name] => Sample Subcategory
[weight] => 0
[depth] => 1
)
[2] => stdClass Object
(
[tid] => 67
[name] => Another Example
[weight] => 1
[depth] => 0
)
[3] => stdClass Object
(
[tid] => 68
[name] => Subcategory for Another Example
[weight] => 1
[depth] => 1
)
[4] => stdClass Object
(
[tid] => 22
[name] => A third example master category
[weight] => 0
[depth] => 0
)
Sonuç bu gibi görünüyor böylece ilk derinliği, daha sonra ağırlık göre sıralamak yapabilirsiniz:
Array
(
[0] => stdClass Object
(
[tid] => 22
[name] => A third example master category
[weight] => 0
[depth] => 0
)
[1] => stdClass Object
(
[tid] => 67
[name] => Another Example
[weight] => 1
[depth] => 0
)
[2] => stdClass Object
(
[tid] => 24
[name] => Sample
[weight] => 3
[depth] => 0
)
[3] => stdClass Object
(
[tid] => 66
[name] => Sample Subcategory
[weight] => 0
[depth] => 1
)
[4] => stdClass Object
(
[tid] => 68
[name] => Subcategory for Another Example
[weight] => 0
[depth] => 1
)