[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • foreach -> letztes Element
Seite 1 von 1

foreach -> letztes Element

Verfasst: 5. Dez 2011, 16:23
von Manuel.Schmöllerl
Hallo,

ich möchte eine Bilderliste in einer foreach-Schleife ausgeben. Das funktioniert auch problemlos:

Code: Alles auswählen

foreach ((explode(",", "REX_MEDIALIST[1]")) as $gentry) {
echo '\"files/' . $gentry . '\",';
}
Jetzt möchte ich aber beim letzten Element das Komma ',' weglassen.

Ich habe schon Einiges versucht, habe aber leider keinen Erfolg damit. :(

Vielleicht hat jemand eine Lösung für mich.

Bitte, danke.

Alles Gute und Beste Grüße
Manuel

Re: foreach -> letztes Element

Verfasst: 5. Dez 2011, 16:53
von jdlx
Manuel.Schmöllerl hat geschrieben: Jetzt möchte ich aber beim letzten Element das Komma ',' weglassen.
Pack deine Ausgabe erstmal in ne Variable (statt dem echo()), entferne das hintere Komma mit rtrim(), und gib den Kram dann aus..

hth,
Jan

Re: foreach -> letztes Element

Verfasst: 6. Dez 2011, 15:41
von Manuel.Schmöllerl
Danke für deine Hilfe, Jan.

Ich habe es jetzt so gelöst:

Code: Alles auswählen

$bilder = explode(',', trim("REX_MEDIALIST[1]"));
$letztes_bild = end($bilder);

foreach ($bilder as $bild) {
	if ($bild == $letztes_bild) { 
    		print '{image : \'files/' . $bild . '\', thumb : \'index.php?rex_img_type=fotogalerie&rex_img_file=' . $bild . '\'}';
    }
	else {
    		print '{image : \'files/' . $bild . '\', thumb : \'index.php?rex_img_type=fotogalerie&rex_img_file=' . $bild . '\'},';
    }
}
Ist vielleicht nich so elegant, aber es funktioniert.

Alles Gute und Beste Grüße
Manuel

Re: foreach -> letztes Element

Verfasst: 6. Dez 2011, 15:48
von jdlx
ungetestet:

Code: Alles auswählen

$out = '';
foreach ((explode(",", "REX_MEDIALIST[1]")) as $gentry)
{
  $out .= '\"files/' . $gentry . '\",';
}
echo rtrim($out,',');
hth,
jan

Re: foreach -> letztes Element

Verfasst: 6. Dez 2011, 19:44
von Markus.Lorch
Hatte mir da auch Gedanken drüber gemacht und habs mit implode einfach wieder zusammen gebaut. Wäre es mit rtrim perfomanter?

Re: foreach -> letztes Element

Verfasst: 6. Dez 2011, 20:12
von Markus.Staab
Hi,

Ich denke mit groesserer anzahl an elementen wird explode + implode immer schneller, wobei beides sehr schnell sein sollte in diesem mini szenario.

Gruß Markus

Re: foreach -> letztes Element

Verfasst: 6. Dez 2011, 23:07
von Xong
Das kann man gut als Einzeiler lösen:

Code: Alles auswählen

if(!empty('REX_MEDIALIST[1]')) echo '"files/'.implode('","files/', explode(',', 'REX_MEDIALIST[1]')).'"';
Okay, leserlich ist das für den Ungeübten nicht, aber ich nutze das häufig so, weil es einfach die schnellste Variante ist.

Re: foreach -> letztes Element

Verfasst: 11. Jan 2012, 04:45
von Hirbod
Hi,

finde es toll das ich irgendwie nie auslerne :)
Ich kannte end() nicht mal.

Hab das immer so gemacht.

Code: Alles auswählen

$images = explode(",", "REX_MEDIALIST[1]");
if(is_array($images)){
    $amount_of_images = count($images);
    $i = 1;
    foreach($images as $img){
    
        hier einfach rein, ob $i kleiner als $amount, wenn ja, mach x, ansonsten y 

        $i++;
    }
}