sort()
Stephanie
- php
Hi,
welche Abwandlung von sort() muß ich verwenden, damit mein guter natürlich sortiert, aber dabei alles hinter dem Bindestrich ignoriert?
106-01 und 24-02
also in diese Reihenfolge bringt:
24-02
106-01
vielen dank!
hi,
welche Abwandlung von sort() muß ich verwenden, damit mein guter natürlich sortiert, aber dabei alles hinter dem Bindestrich ignoriert?
106-01 und 24-02
also in diese Reihenfolge bringt:
24-02
106-01
das ist mit sort() selber vermutlich gar nicht zu machen.
schau dir usort() an.
dort kannst du eine eigene funktion für den größer/kleiner/gleich-vergleich angeben.
und diese funktion erstellst du dir dann einfach derart, dass sie von den zwei übergebenen werten jeweils nur den teil vor dem strich betrachtet, diesen in eine zahl umwandelt, und dann vergleicht - und je nach ergebnis des vergleichs eine zahl kleiner/größer null oder auch null bei gleichheit zurückgibt. (an einfachsten ist dann wohl einfach die differenz zweite zahl minus erste zurückzugeben.)
http://de.php.net/manual/de/function.usort.php
gruß,
wahsaga
ääh... du könntest mir da nicht zufällig ein konkretes beispiel machen?? ich versteh' nämlich leider nur bahnhof...
hi,
welche Abwandlung von sort() muß ich verwenden, damit mein guter natürlich sortiert, aber dabei alles hinter dem Bindestrich ignoriert?
106-01 und 24-02
also in diese Reihenfolge bringt:
24-02
106-01das ist mit sort() selber vermutlich gar nicht zu machen.
schau dir usort() an.
dort kannst du eine eigene funktion für den größer/kleiner/gleich-vergleich angeben.und diese funktion erstellst du dir dann einfach derart, dass sie von den zwei übergebenen werten jeweils nur den teil vor dem strich betrachtet, diesen in eine zahl umwandelt, und dann vergleicht - und je nach ergebnis des vergleichs eine zahl kleiner/größer null oder auch null bei gleichheit zurückgibt. (an einfachsten ist dann wohl einfach die differenz zweite zahl minus erste zurückzugeben.)
http://de.php.net/manual/de/function.usort.php
gruß,
wahsaga
Nabend Steff,
natsort() http://de.php.net/manual/de/function.natsort.php ist für Deinen Fall völlig ausreichend.
Gruß aus Berlin!
eddi
Leider nicht, da natsort() sich von dem hinter dem bindestrich beeindrucken lässt... alles hinter dem bindestrich soll aber beim sortieren ignoriert werden. also z.b.
2-2
10-1
20-3
hilfe!
natsort() http://de.php.net/manual/de/function.natsort.php ist für Deinen Fall völlig ausreichend.
Hallo Steffie,
<?php
$a[]='106-01';
$a[]='24-02';
$a[]='00-00';
$a[]='00-10';
$a[]='2-2';
$a[]='10-1';
$a[]='20-3';
$b=$a;
natsort($b);
print_r($b);
?>
ergibt bei mir diese Ausgabe:
Array
(
[2] => 00-00
[3] => 00-10
[4] => 2-2 // Dein geposteter Wert
[5] => 10-1 // Dein geposteter Wert
[6] => 20-3 // Dein geposteter Wert
[1] => 24-02
[0] => 106-01
)
Wie Du siehst, gibt es den "Anfangswert" 00 doppelt und natürlich wird hierbei die Abfolge nach den "Endwerten" getroffen. Alle anderen werden allerdings folgerichtig eingeordnet. Vielleicht wäre es hilfreich, wenn Du Dein Probem vom Abstrakten ins Konkrete verdeutlichst, um zu verstehen wie was abzuordnen ist.
Gruß aus Berlin!
eddi
hi,
ääh... du könntest mir da nicht zufällig ein konkretes beispiel machen?? ich versteh' nämlich leider nur bahnhof...
function mysort($a, $b) {
return (int)$a - (int)$b;
}
$array = array ('10-1', '20-3', '2-2');
usort($array, 'mysort');
print_r($array);
gruß,
wahsaga