Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Benutzeravatar
Manuel.Schmöllerl
Beiträge: 148
Registriert: 10. Apr 2006, 23:48
Wohnort: Wien
Kontaktdaten: Website

foreach -> letztes Element

5. Dez 2011, 16:23

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
Schmöllerl Consulting

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: foreach -> letztes Element

5. Dez 2011, 16:53

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
vg, Jan

Benutzeravatar
Manuel.Schmöllerl
Beiträge: 148
Registriert: 10. Apr 2006, 23:48
Wohnort: Wien
Kontaktdaten: Website

Re: foreach -> letztes Element

6. Dez 2011, 15:41

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
Schmöllerl Consulting

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: foreach -> letztes Element

6. Dez 2011, 15:48

ungetestet:

Code: Alles auswählen

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

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

Re: foreach -> letztes Element

6. Dez 2011, 19:44

Hatte mir da auch Gedanken drüber gemacht und habs mit implode einfach wieder zusammen gebaut. Wäre es mit rtrim perfomanter?
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: foreach -> letztes Element

6. Dez 2011, 20:12

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

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: foreach -> letztes Element

6. Dez 2011, 23:07

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.
LG,
Xong

Bild Määääääääääääääääääääääääh!

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

Re: foreach -> letztes Element

11. Jan 2012, 04:45

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++;
    }
}

Zurück zu „Sonstiges“