Multiple sort in een array
Ik probeer een array te sorteren op meerdere dimensies, alleen lukt het niet.
De output is nl. niet gesorteerd zoals ik het wil hebben.
Kan iemand mij hierbij helpen?
Ik probeer te sorteren, zoals je dit met SQL zo zou doen;
"ORDER BY column1, column2, column3, column4"
Dit is mijn script;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$p=0;
$icg=Array();
for($i=0;$i<20;$i++) {
$icg[$p]['maand'] = $somevalue; // [A-Za-z] value
$icg[$p]['productgrp'] = $somevalue; // [A-Za-z] value
$icg[$p]['land'] = $somevalue; // [A-Za-z] value
$icg[$p]['week'] = $somevalue; // [1-52] value
$p++;
}
$column=Array();
$column2=Array();
$column3=Array();
$column4=Array();
if (!empty($icg)) {
foreach($icg as $sortarray) {
$column[] = $sortarray['maand'];
$column2[] = $sortarray['productgrp'];
$column3[] = $sortarray['land'];
$column4[] = $sortarray['week'];
}
array_multisort($column, SORT_DESC, $icg);
array_multisort($column2, SORT_DESC, $icg);
array_multisort($column3, SORT_DESC, $icg);
array_multisort($column4, SORT_DESC, $icg);
}
?>
$p=0;
$icg=Array();
for($i=0;$i<20;$i++) {
$icg[$p]['maand'] = $somevalue; // [A-Za-z] value
$icg[$p]['productgrp'] = $somevalue; // [A-Za-z] value
$icg[$p]['land'] = $somevalue; // [A-Za-z] value
$icg[$p]['week'] = $somevalue; // [1-52] value
$p++;
}
$column=Array();
$column2=Array();
$column3=Array();
$column4=Array();
if (!empty($icg)) {
foreach($icg as $sortarray) {
$column[] = $sortarray['maand'];
$column2[] = $sortarray['productgrp'];
$column3[] = $sortarray['land'];
$column4[] = $sortarray['week'];
}
array_multisort($column, SORT_DESC, $icg);
array_multisort($column2, SORT_DESC, $icg);
array_multisort($column3, SORT_DESC, $icg);
array_multisort($column4, SORT_DESC, $icg);
}
?>
gebruik usort() of uasort()
Maar ik begrijp dat er met u(a)sort(); een functie gehangen kan worden zodat de array aan de hand hiervan behandeld wordt?
Dan moet ik even na gaan denken wat die functie precies moet gaan doen :)
Ik kom er op terug
Als er verder ideeen zijn hoor ik ze natuurlijk graag!
Code (php)
1
2
3
2
3
<?php
array_multisort($column, SORT_DESC,$column2, SORT_DESC,$column3, SORT_DESC, $column4, SORT_DESC,$icg);
?>
array_multisort($column, SORT_DESC,$column2, SORT_DESC,$column3, SORT_DESC, $column4, SORT_DESC,$icg);
?>
Bovenstaande had je gewoon van php.net kunnen afplukken
Note: geef je arrays een duidelijke naam, dat vereenvoudig het begrip van het script
Gewijzigd op 11/11/2010 20:48:07 door Noppes Homeland
Van php.net had ik het niet op deze manier begrepen... Weer wat geleerd!
http://www.php.net/array_multisort
Example #3 Sorting database results
Nou is het natuurlijk een beetje een krompte example titel, maarj a daar kan ik dan ook niets aan doen, zodra je SQL kunt gebruiken sorteer je uiteraard met de ORDER BY clause.