Array sorteren zoals in Mysql?
Ik heb de volgende array, die ik graag wil sorteren zoals dat in Mysql kan, maar ik kom er niet uit. Omdat ik het in Mysql niet helemaal voor elkaar krijg heb ik in PHP de arrays samengevoegd. Nu wil ik ze eerst sorteren op de totale score (stand_punten), en vervolgens op r7, r6, r5, r4, r3, r2, r1 (omdat het laatste resultaat dan beslissend is). Iemand die weet hoe dit zou kunnen?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php Array (
[0] => Array ( [id] => 3 [land] => Belgium [stand_punten] => 200 [r1] => 80 [r2] => 70 [r3] => 70 [r4] => 70 [r5] => 46 [r6] => 70 [r7] => 70 )
[1] => Array ( [id] => 4 [land] => Netherlands [stand_punten] => 180 [r1] => 60 [r2] => 80 [r3] => 60 [r4] => 55 [r5] => 65 [r6] => 65 [r7] => 48 )
[2] => Array ( [id] => 2 [land] => Belgium [stand_punten] => 180 [r1] => 55 [r2] => 60 [r3] => 46 [r4] => 65 [r5] => 70 [r6] => 60 [r7] => 65 )
[3] => Array ( [id] => 1 [land] => Belgium [stand_punten] => 180 [r1] => 70 [r2] => 65 [r3] => 80 [r4] => 46 [r5] => 42 [r6] => 48 [r7] => 38 )
[4] => Array ( [id] => 5 [land] => Netherlands [stand_punten] => 160 [r1] => [r2] => [r3] => 65 [r4] => 80 [r5] => 80 [r6] => 80 [r7] => 80 )
[5] => Array ( [id] => 7 [land] => Belgium [stand_punten] => 160 [r1] => 48 [r2] => 42 [r3] => 55 [r4] => 38 [r5] => 38 [r6] => 50 [r7] => 60 )
[6] => Array ( [id] => 6 [land] => Belgium [stand_punten] => 160 [r1] => 28 [r2] => 36 [r3] => 50 [r4] => 37 [r5] => 60 [r6] => 55 [r7] => 55 )) ?>
[0] => Array ( [id] => 3 [land] => Belgium [stand_punten] => 200 [r1] => 80 [r2] => 70 [r3] => 70 [r4] => 70 [r5] => 46 [r6] => 70 [r7] => 70 )
[1] => Array ( [id] => 4 [land] => Netherlands [stand_punten] => 180 [r1] => 60 [r2] => 80 [r3] => 60 [r4] => 55 [r5] => 65 [r6] => 65 [r7] => 48 )
[2] => Array ( [id] => 2 [land] => Belgium [stand_punten] => 180 [r1] => 55 [r2] => 60 [r3] => 46 [r4] => 65 [r5] => 70 [r6] => 60 [r7] => 65 )
[3] => Array ( [id] => 1 [land] => Belgium [stand_punten] => 180 [r1] => 70 [r2] => 65 [r3] => 80 [r4] => 46 [r5] => 42 [r6] => 48 [r7] => 38 )
[4] => Array ( [id] => 5 [land] => Netherlands [stand_punten] => 160 [r1] => [r2] => [r3] => 65 [r4] => 80 [r5] => 80 [r6] => 80 [r7] => 80 )
[5] => Array ( [id] => 7 [land] => Belgium [stand_punten] => 160 [r1] => 48 [r2] => 42 [r3] => 55 [r4] => 38 [r5] => 38 [r6] => 50 [r7] => 60 )
[6] => Array ( [id] => 6 [land] => Belgium [stand_punten] => 160 [r1] => 28 [r2] => 36 [r3] => 50 [r4] => 37 [r5] => 60 [r6] => 55 [r7] => 55 )) ?>
Gewijzigd op 02/09/2016 23:29:02 door G Jansma
In Mysql krijg ik het door de complexiteit van de tabellen niet voor elkaar. Ik wil daarom de array in PHP in de juiste volgorde krijgen. Ik neem aan dat er zoiets bestaat PHP om dat zo mooi te sorteren als in Mysql een Order By zou kunnen?
Hoe staat het daarin en hoe moet het eruit komen?
Ramon van Dongen op 02/09/2016 23:56:45:
Misschien eerst proberen het in MySQL wel voor elkaar te krijgen?
Hoe staat het daarin en hoe moet het eruit komen?
Hoe staat het daarin en hoe moet het eruit komen?
In Mysql wil ik het probleem ook graag tackelen, ik zou het eigenlijk beide willen weten. Ik heb even een vereenvoudigde variant in SQLFiddle gezet.
http://sqlfiddle.com/#!9/8c6ed/8
Ik wil graag de uitkomst zoals hij er nu staat, maar dan van alle spelers dus slechts één rij. Ik wil dus de punten van de wedstrijden 30, 31, 32 uit 2016 in één rij krijgen met de ID en naam
id - naam - r1 - r2 - r3
1 - Jan - 90 - 48 - 60
2 - Piet - 80 - 90 - 0
Alvast bedankt
Toevoeging op 03/09/2016 09:33:18:
Jan R op 03/09/2016 03:07:07:
En als het dan toch niet gaat in sql probeer dan uasort, usort, uksort, enz eens
http://php.net/manual/en/function.uasort.php
http://php.net/manual/en/function.uasort.php
Ik heb uiteraard gekeken naar die functies, maar ik kom er niet uit. Vandaar mijn vraag.
Gewijzigd op 03/09/2016 09:30:36 door G Jansma
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
28
29
30
31
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
28
29
30
31
<?php
// Obtain a list of columns
foreach ($multicol as $key => $row) {
$sp[$key] = $row['stand_punten'];
$r7[$key] = $row['r7'];
$r6[$key] = $row['r6'];
$r5[$key] = $row['r5'];
$r4[$key] = $row['r4'];
$r3[$key] = $row['r3'];
$r2[$key] = $row['r2'];
$r1[$key] = $row['r1'];
}
array_multisort(
$sp, SORT_DESC,
$r7, SORT_DESC,
$r6, SORT_DESC,
$r5, SORT_DESC,
$r4, SORT_DESC,
$r3, SORT_DESC,
$r2, SORT_DESC,
$r1, SORT_DESC,
$multicol
);
echo '<pre>';
print_r($multicol);
echo '</pre>';
?>
// Obtain a list of columns
foreach ($multicol as $key => $row) {
$sp[$key] = $row['stand_punten'];
$r7[$key] = $row['r7'];
$r6[$key] = $row['r6'];
$r5[$key] = $row['r5'];
$r4[$key] = $row['r4'];
$r3[$key] = $row['r3'];
$r2[$key] = $row['r2'];
$r1[$key] = $row['r1'];
}
array_multisort(
$sp, SORT_DESC,
$r7, SORT_DESC,
$r6, SORT_DESC,
$r5, SORT_DESC,
$r4, SORT_DESC,
$r3, SORT_DESC,
$r2, SORT_DESC,
$r1, SORT_DESC,
$multicol
);
echo '<pre>';
print_r($multicol);
echo '</pre>';
?>
$multicol is de gefatsoeneerde array.
Het resultaat met hoop opmaak zie je hier :
http://adoptive.esy.es/multisort/
Gewijzigd op 03/09/2016 15:04:39 door Adoptive Solution
Nog iemand die weet hoe ik het in Mysql ook voor elkaar kan krijgen?
SELECT ... FROM (SELECT .... ORDER BY ...)