Ersetzen Sie das letzte Komma durch ein &-Zeichen

Lesezeit: 3 Minuten

Ich habe überall gesucht, aber keine Lösung gefunden, die für mich funktioniert.

Ich habe folgendes:

$bedroom_array = array($studio, $one_bed, $two_bed, $three_bed, $four_bed);

Sagen wir für dieses Beispiel:

$studio = '1';
$one_bed = '3';
$two_bed = '3';

Ich verwende dann die Implode-Funktion, um ein Komma zwischen alle Werte zu setzen:

$bedroom_list = implode(", ", array_filter($bedroom_array));
echo $bedroom_list;

Das gibt dann aus:

1, 2, 3

Was ich tun möchte, ist das letzte Komma in der Zeichenfolge zu finden und es durch ein & zu ersetzen, also würde es lauten:

1, 2 & 3

Die Zeichenfolge wird nicht immer so lang sein, sie kann kürzer oder länger sein, zB 1, 2, 3, 4 und so weiter. Ich habe versucht, substr zu verwenden, bin mir aber nicht sicher, ob dies für das, was ich brauche, funktioniert?

  • Ich habe hier dieselbe Frage beantwortet: Wie bearbeite ich das Implodieren so, dass es Werte mit zwei Zeichenfolgen verbindet?

    – GolezTrol

    7. Oktober 2011 um 13:06 Uhr


  • Mögliches Duplikat von Implode array with “, ” and add “and ” before last item

    – Wütender Dan

    8. Mai 2015 um 14:23 Uhr

Benutzer-Avatar
Michael Berkowski

Knallen Sie das letzte Element ab, implodieren Sie den Rest zusammen und kleben Sie das letzte wieder auf.

$bedroom_array = array('studio', 'one_bed', 'two_bed', 'three_bed', 'four_bed');
$last = array_pop($bedroom_array);
$string = count($bedroom_array) ? implode(", ", $bedroom_array) . " & " . $last : $last;

Konvertieren & an die Entität & im Bedarfsfall.

  • Ich würde wechseln $string = implode(", ", $bedroom_array) . " & " . $last; zu $string = count($bedroom_array) ? implode(", ", $bedroom_array) . " & " . $last : $last; um Fälle abzudecken, in denen vor dem Pop nur ein Element im Array vorhanden war. Verwenden Sie auch, wenn dies nur direkt zum Browser geht ' & ' anstatt ' & '.

    – daiskog

    7. Oktober 2011 um 13:11 Uhr

  • Hier ist eine Funktionsversion mit einer kleinen Fehlerprüfung: ideone.com/SQZfi

    – Brad Christie

    7. Oktober 2011 um 13:14 Uhr

  • Danke für Ihre Hilfe! Ich habe versucht, die Idee von Michael zu verwenden, hatte aber einige Probleme, da die Variablen im Array nicht immer gesetzt sind – daher die Verwendung von array_filter. Ich habe das & funktioniert, aber es würde immer noch das letzte Array anzeigen, um 1, 2 & 2 anstelle von 1 & 2 zu erhalten. Am Ende habe ich Brads Code verwendet, der wie ein Traum funktioniert hat! Ich würde mich trotzdem für andere Möglichkeiten interessieren, dies zu tun!

    – iain

    7. Oktober 2011 um 15:02 Uhr

Benutzer-Avatar
JRL

Eine einzeilige Alternative, die für Arrays jeder Größe funktioniert ($b = $bedroom_array):

echo count($b) <= 1 ? reset($b) : join(', ', array_slice($b, 0, -1)) . " & " . end($b); 

Benutzer-Avatar
Kunst Shipulin

function fancy_implode($arr){
    array_push($arr, implode(' and ', array_splice($arr, -2)));
    return implode(', ', $arr);
}

Ich finde das einfacher zu lesen / zu verstehen und zu verwenden

  • Ändert das ursprüngliche Array nicht
  • Verwendet keine regulären Ausdrücke, da diese fehlschlagen können, wenn Strings im Array Kommas enthalten, es könnte einen triftigen Grund dafür geben, etwa so: array('Shirts (S, M, L)', 'Pants (72 x 37, 72 x 39)');
  • Trennzeichen müssen nicht die gleiche Länge haben wie bei einigen anderen Lösungen

Benutzer-Avatar
max

$bedroom_list = implode(", ", array_filter($bedroom_array));

$vars =  $bedroom_list;

$last = strrchr($vars,",");

$last_ = str_replace(",","&",$last);

echo str_replace("$last","$last_",$vars);

1007380cookie-checkErsetzen Sie das letzte Komma durch ein &-Zeichen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy