Ik wil uit 2 tabellen een array vormen met daarin een titel en een timestamp.
Nadat deze is gevormd wil ik de array sorteren op timestamp, wat mij het makkelijkst leek te gaan met usort icm een vergelijk functie (correct me if I'm wrong pls
).
Ik heb nu het volgende:
Hij sorteert dus als de stamps gelijk zijn op titel.
De array die gesorteerd moet worden en de manier van aanroepen:
Nu wordt hij niet goed gesorteerd, het lijkt alsof hij het alfabetisch doet en niet de grootte van het getal vergelijkt. Is dit wel mogelijk?
Uitkomst van bovenstaande staat hieronder:
Nadat deze is gevormd wil ik de array sorteren op timestamp, wat mij het makkelijkst leek te gaan met usort icm een vergelijk functie (correct me if I'm wrong pls
Ik heb nu het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
| function cmp ($a, $b) { $l = $a["stamp"]; $k = $b["stamp"]; if($k==$l){ return strcmp($a["title"], $b["title"]); } else { return strcmp($k, $l); } } |
Hij sorteert dus als de stamps gelijk zijn op titel.
De array die gesorteerd moet worden en de manier van aanroepen:
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
| // item array sorteren $itemArray[0]["title"] = "blaat"; $itemArray[0]["stamp"] = "234234"; $itemArray[1]["title"] = "arf"; $itemArray[1]["stamp"] = "234"; $itemArray[2]["title"] = "arf"; $itemArray[2]["stamp"] = "235"; $itemArray[3]["title"] = "arf"; $itemArray[3]["stamp"] = "2344345656"; // array sorteren usort($itemArray, "cmp"); // array doorlopen foreach ($itemArray as $item) { // item opstellen $itemTitel = $item["title"]; $itemStamp = $item["stamp"]; // item weergeven echo "$itemStamp - $itemTitel<br>"; } |
Nu wordt hij niet goed gesorteerd, het lijkt alsof hij het alfabetisch doet en niet de grootte van het getal vergelijkt. Is dit wel mogelijk?
Uitkomst van bovenstaande staat hieronder:
code:
1
2
3
4
| 235 - arf 2344345656 - arf 234234 - blaat 234 - arf |