Arrays abwechselnd ausgeben
nixxon
- php
Hallo!
Ich such nun schon ne ganze weile und finde einfach keinen Lösungshinweis zu meinem Problem:
Ich möchte die Werte von 2 Arrays abwechselnd ausgeben und habe dazu folgendes gebaut:
Anmerkung: die Arrays haben immer die selbe menge! Und mein Problem beginnt recht weit unten im Code - denke ich.
<?php
$path = 'bilder/';
// Hier sammel ich die Dateinamen
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' AND $file != '..') {
$dateinamen[] = $file;
// die Dateinamen brauchen noch eine formatierung
// zuerst sammel ich Dateinamen und schreibe das Verzeichnis davor
$directory .= '"'."$path"."$file".'"'.'</br>';
// Jetzt Dateinamen den suffix wegnehmen und in weiteren array stopfen
$bildnr = substr("$file", 0, -4);
// Dateinamen ohne Suffix umformatieren
$return .= '$files['."'"."$bildnr"."'".']'.'</br>';
}
}
closedir($handle);
}
else {
echo "error";
}
// hier beginnt mein Problem
// -------------------------
// erst werden die einträge gezählt
$counting = count($dateinamen);
// jetzt würde ich gerne der Anzahl entsprechend die Arrays abwechselnd ausgeben
for($i=0;$i<$counting;$i++) {
echo $return[$i].$directory[$i];
}
?>
Im Moment bekomme ich folgende Ausgabe:
$"fbiilledse[r'/00330044220000991133'5].
Es soll aber folgendes rauskommen:
$files['03042009135.jpg'] "bilder/03042009135.jpg";
Gebe ich Array $return und Array $directory einzeln aus erhalte ich genau die gewünschten Einträge, leider aber listbasiert nacheinander. (24 Dateien/Einträge existieren aktuell)
Ich würde euch sehr für einen Hinweis danken!
Gruß
nixxon
PS: Haut mich bitte nicht für meine Art zu "programmieren"; ich lerne ja noch...
Lieber nixxon,
$dateinamen[] = $file;
$dateinamen ist ein Array.
$directory .= '"'."$path"."$file".'"'.'</br>';
$directory ist ein String.
$return .= '$files['."'"."$bildnr"."'".']'.'</br>';
$return ist ein String.
for($i=0;$i<$counting;$i++) {
echo $return[$i].$directory[$i];
}
Du greifst mittels der Array-Notation auf Teilstrings (hier einzelne Zeichen) von $directory und $return zu, um sie auszugeben. Vergleiche hierzu den aktuellen Thread: https://forum.selfhtml.org/?t=188957&m=1258556
Liebe Grüße,
Felix Riesterer.
$dateinamen[] = $file;
$dateinamen ist ein Array.
$directory .= '"'."$path"."$file".'"'.'</br>';
$directory ist ein String.
$return .= '$files['."'"."$bildnr"."'".']'.'</br>';
$return ist ein String.
Danke - das war der entscheidende Hinweis! Da hätte ich wohl selbst merken müssen was ich da baue... Naja.. aller Anfang ist schwer..
für all die, die wissen wollen wie ich es jetzt gelöst hab:
<?php
$path = 'bilder/';
// Dateinamen einsammeln:
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' AND $file != '..') {
$dateinamen[] = $file;
}
}
closedir($handle);
} else {
echo 'error';
}
// zählen wieviel Dateien gefunden wurden:
$counting = count($dateinamen);
// Datei-Suffix (.jpg) entfernen und wieder einen Array draus machen:
for($x=0;$x<$counting;$x++){
$bildnr[$x] = substr($dateinamen[$x], 0, -4);
}
// Jetzt folt die Ausgabe
for($i=0;$i<$counting;$i++) {
echo '$files['."'".$bildnr[$i]."'".']'.' = '.'"'.$path.$dateinamen[$i].'"'.'</br>';
}
?>
Ausgabe sieht jetzt so aus:
$files['03042009135'] = "bilder/03042009135.jpg"
$files['03042009137'] = "bilder/03042009137.jpg"
.
.
usw.
Danke :)
Grüße
Nixxon
Hallo :)
Abgesehen davon dass du Felix' Tipps folgen solltest :) frage ich mich warum du sowas bastelst:
$directory .= '"'."$path"."$file".'"'.'</br>';
Was (nahezu) identisch wäre zu
$directory .= '"'.$path.$file.'"</br>';
Insbesondere ist mir dabei unklar warum du die Variablen in Anführungsstriche gesetzt hast.
Hallo :)
Abgesehen davon dass du Felix' Tipps folgen solltest :) frage ich mich warum du sowas bastelst:
$directory .= '"'."$path"."$file".'"'.'</br>';
Was (nahezu) identisch wäre zu
$directory .= '"'.$path.$file.'"</br>';
Insbesondere ist mir dabei unklar warum du die Variablen in Anführungsstriche gesetzt hast.
Dachte das gehört sich so wenn man "sauber" programmieren will. Also, dachte das gehört zu einem "guten" Stil... Von wegen ' = 1 zu 1 übernehmen und " = interpretieren!? :P
Nun, an strings hatte ich nicht gedacht, deswegen habe ich die Umformatierung an das Ende gesetzt:
$directory .= '"'."$path"."$file".'"'.'</br>'; // -> Zeile wurde gelöscht
$return .= '$files['."'"."$bildnr"."'".']'; // -> Zeile wurde gelöscht
$bildnr = substr("$file", 0, -4);
for($i=0;$i<$counting;$i++) {
echo '$files['."'"."$bildnr[$i]"."'".']'.' = '.'"'."$path"."$dateinamen[$i]".'"'.'</br>';
}
Aber wenn ich das richtig verstanden habe, hab ich jetzt noch immer einen String: $bildnr
weil ich etwas weiter oben $bildnr = substr("$file", 0, -4);
noch den Datei-suffix entfernen möchte.
Warum ich das baue:
Sofern die Ausgabe funktioniert würde ich diese in eine Datei schreiben. Diese dient dann als Inhaltsverzeichnis für mein Album.
Hi,
Insbesondere ist mir dabei unklar warum du die Variablen in Anführungsstriche gesetzt hast.
Dachte das gehört sich so wenn man "sauber" programmieren will. Also, dachte das gehört zu einem "guten" Stil...
Nein, im Gegenteil.
$var1 = "$var2";
ist absoluter Unfug. An der Stelle haben die Anführungszeichen nicht den geringsten Sinn und Zweck, also weg damit!
(Wenn man explizit nicht-Stringwerte in einen String wandeln will [was aber in PHP eher selten notwendig ist, wegen der automatischen Typkonvertierung], dann kann man auch explizites Type Casting verwenden. Damit ist dann auch ganz klar definiert, wie der Ergebnistyp aussieht.)
MfG ChrisB