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
Michael Berkowski
Knallen Sie das letzte Element ab, implodieren Sie den Rest zusammen und kleben Sie das letzte wieder auf.
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
JRL
Eine einzeilige Alternative, die für Arrays jeder Größe funktioniert ($b = $bedroom_array):
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
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