Forum Moderators: coopster
What I 'm trying to do, is to sort an ecommerce's category with N levels, depending on how many subcategories there are..
I managed to sort the first level, but I still think my logic is way too unnecessary?
function sort_crap (&$array) {
foreach ($array as $key=>$val) {$order_by[$key] = $val[0]['order_by'];
if ($val['subcategory'])
sort_crap($val['subcategory']);
}
array_multisort($order_by, SORT_ASC,SORT_NUMERIC, $array);
}
sort_crap($masterArray);
Here is an array for you to test
$masterArray = array (
100 =>
array (
0 =>
array (
'order' => '20',
),
'subcat' =>
array (
101 =>
array (
0 =>
array (
'order' => '0',
),
),
286 =>
array (
0 =>
array (
'order' => '1',
),
),
),
),
111 =>
array (
0 =>
array (
'order' => '10',
),
'subcat' =>
array (
112 =>
array (
0 =>
array (
'order' => '3',
),
),
115 =>
array (
0 =>
array (
'order' => '0',
),
'subcat' =>
array (
653 =>
array (
0 =>
array (
'order' => '0',
),
),
654 =>
array (
0 =>
array (
'order' => '0',
),
),
),
),
141 =>
array (
0 =>
array (
'order' => '0',
),
),
),
),
);
Thanks for the help in advance, everyone.
Urban
Kinda cpu intensive, but I don't have a better method to it =<
$masterArray = array(
'200' => array(
'sub3' => 3,
'sub1' => 1,
'sub2' => 2
),
'100' => array(
'sub6' => 6,
'sub5' => array(
'cat3' => 3,
'cat1' => 1,
'cat2' => 2
),
'sub4' => 4
),
'300' => array(
'sub7' => 7,
'sub8' => 8,
'sub9' => 9
)
);
function recursiveSort(&$array) {
/**
* Sort the array by it's keys first
*/
ksort($array);
foreach ($array as &$v) {
if (is_array($v)) {
recursiveSort($v);
}
}
/**
* Sort the array by it's values
*/
asort($array);
return $array;
}
recursiveSort($masterArray);
print_r($masterArray);
So I guess there isn't an easier way to sort the message other than doing it resursively. I was hoping array_multisort can handle it.
By the way how can I organize my array and code similar to yours? even though I use the {code},{pre} tags, it's still quite un-organized