sortieren einer $var
Michael
- php
Hallo,
ich hab in meinem Skript eine Variable $var,
die ich durch auslesen eines Ornderinhaltes bekomme.
Nun möchte ich diese Variable nach dem namen sortiert haben.
Mit einem Array hab ichs schon probiert,
nur funktioniert dies nicht, da das Array keine "richtigen" Daten zum sortieren bekommt.
Hier mal das Array:
$var = array("$var");
sort;
reset;
while (list ($key, $val) = each ($var)) {
echo "$var"; }
Würd mich freuen, wenn mir jemand helfen könnte, Danke.
mfg
Michael
Hallo!
Hier mal das Array:
$var = array("$var");
so kommst Du sicher nicht an einen Array, zumindest nicht an so einen wie Du es Dir vorstellst. Wie erzeugst Du denn $var, bzw. was steht genau in $var?
sort;
reset;
while (list ($key, $val) = each ($var)) {
echo "$var"; }
Das sieht doch gut aus, was genau passiert denn? Ich tippe darauf das $var einfach nicht so aussieht wie Du es Dir vorstellst, versuche mal var_dump($var) um Dir anzeigen zu lassen was $var wirklich ist und wie es genau aussieht!
Grüße
Andreas
Hallo,
so kommst Du sicher nicht an einen Array, zumindest nicht an so einen wie Du es Dir vorstellst. Wie erzeugst Du denn $var, bzw. was steht genau in $var?
Also $var bekomm ich in dem ich einen Ordner abfrage,
was in diesem für Unterordner enthalten sind ;-)
Und diese Unterordnernamen möchte ich mir gerne in $var anzeigen lassen.
Also stehen in $var nur Orndernamen.
sort;
reset;
while (list ($key, $val) = each ($var)) {
echo "$var"; }Das sieht doch gut aus, was genau passiert denn? Ich tippe darauf das $var einfach nicht so aussieht wie Du es Dir vorstellst, versuche mal var_dump($var) um Dir anzeigen zu lassen was $var wirklich ist und wie es genau aussieht!
Ups, müsste ja anders heißen: (bei sort und reset)
if($var=="..") { echo ""; }
else {
$var = array("$var");
sort ($var);
reset ($var);
while (list ($key, $val) = each ($var)) {
echo "$val[$key]<br>";
Also das $var zeigt er mir korrekt an, nur zeigt er mir nicht das als sortiert an.
Weiterhin hatte ich mal gestern getestet, wo der Fehler liegen könnte,
da stellte ich fest, das das Array eigentlich danach sortieren müsste:
$var = array("ordner1", "ordner2", "ordner3");
Und müsste mir eigentlich folgendes rausschmeißen
(wenn ich es mit: echo "ordner[".$key."] = ".$val."; abfrage):
ordner[0] = ordner1
ordner[1] = ordner2
ordner[2] = ordner3
Das macht das Array auch so, wenn ich ihm es direkt sage
($var = array("ordner1", "ordner2", "ordner3");).
Nur möchte ich da eine Variable einsetzen, also $var.
Und wenn ich dann die Abfrage stelle
($var = array("$var");)
Dann zeigt er mir folgendes:
ordner[0] = ordner1
ordner[0] = ordner3
ordner[0] = ordner2
mfg
Michael
Hi!
sort;
reset;
while (list ($key, $val) = each ($var)) {
echo "$var"; }Das sieht doch gut aus,
doch nicht ganz, Du brauchst :
while (list ($key, $val) = each ($var)) {
echo "$val";
}
Ups, müsste ja anders heißen: (bei sort und reset)
if($var=="..") { echo ""; }
wieso das? Wieso gibst Du überhaupt was aus? Und was ist bei "." oder Dateinamen?
else {
$var = array("$var");
sort ($var);
reset ($var);
while (list ($key, $val) = each ($var)) {
echo "$val[$key]<br>";
Das ist falsch. Das heißt genau so wie ich es oben geschrieben habe.
Also das $var zeigt er mir korrekt an, nur zeigt er mir nicht das als sortiert an.
Kommt drauf an wo Du var_dump($var) hinschreibst. Theoretrisch müßte es vorher unsortiert und danach sortiert angezeigt werden.
$var = array("ordner1", "ordner2", "ordner3");
Und müsste mir eigentlich folgendes rausschmeißen
(wenn ich es mit: echo "ordner[".$key."] = ".$val."; abfrage):ordner[0] = ordner1
ordner[1] = ordner2
ordner[2] = ordner3Das macht das Array auch so, wenn ich ihm es direkt sage
($var = array("ordner1", "ordner2", "ordner3");).
Nur möchte ich da eine Variable einsetzen, also $var.
Und wenn ich dann die Abfrage stelle
($var = array("$var");)
Das verstehe ich nicht. Was willst Du für eine Variabe einsetzen, wofür einsetzen? Ich sehe noch nicht wo Du überhaupt einen Array erzeugst. Du gibst die Daten nur in der Schleife mit echo aus. Das bringt Dir nichts, Du mußt die Daten in der Schleife in einen Array schreiben, mal ein abgewandeltes Beispiel von http://php3.de/manual/de/function.readdir.php:
<?php
$handle=opendir('.');
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
//echo "$file\n"; <- das machst Du
$verzeichnis_array[] = $file; // <- so schreibst Du alles in einen Array
}
}
closedir($handle);
?>
Dann hst Du in $verzeichnis_array einen Array mit den einzelnen Einträgen dieses Verzeichnisses stehen.
$var = array("$var") damit erstellst Du einen Array mit einem Element und zwar mit dem ehemaligen $var als Element wenn das ein string ist ist dieses Element halt ein String, wenn $var vorher schon ein Array war dann ist dieser Array das eine Element vom neuen $var, Du hast also einen mehrdimensionalen Array, was Du nicht willst. Den Array wie ich ihn oben erzeugt habe kannst Du direkt sortieren.
Grüße
Andreas
Hi,
ich hab in meinem Skript eine Variable $var,
die ich durch auslesen eines Ornderinhaltes bekomme.
Nun möchte ich diese Variable nach dem namen sortiert haben.
Das erinnert mich an:
"Was ist der Unterschied zwischen einer Krähe? -> Die beiden Beine, besonders das linke, es ist gleichlang."
Wenn Du die PHP-Funktion readdir() für das Lesen von Dateinamen benutzt, bekommst Du immer nur einen Namen. Du musst readdir() daher in einer Schleife aufrufen und das Ergebnis an ein Array anhängen. Das geht z.B. mit array_push(). Außerdem erhältst Du alle Namen, die im Verzeichnis-File enthalten sind. Das können sein:
Directories is_dir("name") ist dann true
Files is_file("name") ist dann true
Links is_link("name") ist dann true
Du musst also auch noch aussortieren, welche Namen Du in das Array übernimmst.
Anschließend kannst Du Dein Array mit asort() oder arsort() sortieren und dann weiterverarbeiten.
Grüße
Tom