usort - nach Zeichenlänge sortieren

Halli Hallo,

ich möchte eine Variable in Arrays zerlegen und diese dann nach
Zeichenlänge sortieren. Dabei soll das Array mit der längsten
Zeichenkette an erster Stelle stehen. Wenn ich das ganze aber starte,
erscheint als Ergebnis

Garten
eigenen Garten
eigenen Garten
großen Garten
Garten

Der Fehler liegt in "usort" Aber wo? Weiß jemand, woran das liegt?
Vielen Dank im voraus für Eure Hilfe :-))


<?php
$s="Garten,großen Garten,eigenem Garten,eigenen Garten,eigener Garten";
$a=explode(",",$s);
$anzahl=count($a);
$i=0;
while ($i<$anzahl)
{
echo $a[$i]."<br>";
usort($a, create_function('$ax,$bx','return strlen($bx) - strlen($ax);'));
$i=$i+1;
}
joerg.nieswand [ Fr, 23 November 2007 23:52 ] [ ID #1877450 ]

Re: usort - nach Zeichenlänge sortieren

Jörg Nieswand schrieb:

> $i=0;
> while ($i<$anzahl)
> {
> echo $a[$i]."<br>";
> usort($a, create_function('$ax,$bx','return strlen($bx) - strlen($ax);'));
> $i=$i+1;
> }

Das mit dem richtigen Einrücken von Blöcken über wir nochmal.

Dein Fehler ist, dass Du _in_ der Schleife usort() aufruft, anstatt dies
ein Mal _vor_ der Schleife zu tun. Zudem erfolgt Deine erste Ausgabe
noch _vor_ dem Sortieren des Feldes.

Dein Schleifenkonstrukt ist außerdem etwas umständlich. Ich würde eine
for-Schleife benutzen.

Gruß. Claus
Claus Reibenstein [ Sa, 24 November 2007 00:09 ] [ ID #1877451 ]

Re: usort - nach Zeichenlänge sortieren

Jörg Nieswand schrieb:

> usort($a, create_function('$ax,$bx','return strlen($bx) - strlen($ax);'=
));

http://de2.php.net/manual/en/function.create-function.php

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Sa, 24 November 2007 00:11 ] [ ID #1877452 ]

Re: usort - nach Zeichenlänge sortieren

Niels Braczek schrieb:
> Jörg Nieswand schrieb:

>> usort($a, create_function('$ax,$bx','return strlen($bx) - strlen($ax);'));

> http://de2.php.net/manual/en/function.create-function.php

Da hat er die Zeile wahrscheinlich her, ja.

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Sa, 24 November 2007 01:27 ] [ ID #1878009 ]

Re: usort - nach Zeichenlänge sortieren

Jau, das wars. Vielen Dank an euch beide :-))

> Dein Fehler ist, dass Du _in_ der Schleife usort() aufruft, anstatt dies
> ein Mal _vor_ der Schleife zu tun. Zudem erfolgt Deine erste Ausgabe
> noch _vor_ dem Sortieren des Feldes.
joerg.nieswand [ Sa, 24 November 2007 02:08 ] [ ID #1878010 ]

Re: usort - nach Zeichenlänge sortieren

Thomas Hamacher schrieb:
> Niels Braczek schrieb:
>> Jörg Nieswand schrieb:
>
>>> usort($a, create_function('$ax,$bx','return strlen($bx) - strlen($ax)=
;'));
>
>> http://de2.php.net/manual/en/function.create-function.php
>
> Da hat er die Zeile wahrscheinlich her, ja.

My bad - da hatte ich wohl etwas fehlinterpretiert.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Sa, 24 November 2007 05:56 ] [ ID #1878012 ]
PHP » de.comp.lang.php.misc » usort - nach Zeichenlänge sortieren

Vorheriges Thema: Frage zu reg_replace
Nächstes Thema: Utf-8 und Sortierung eines Arrays