Frage Irgendein Äquivalent zu = = zum Anfang des Strings in PHP?


Ich frage mich nur, ob es etwas wie. = Zum Hinzufügen von Text am Anfang eines Strings gibt, z. B .:

$foo =. 'bar';

was nicht funktioniert.

Edit: Beispiel war ursprünglich $foo =. $bar; was mit erreicht werden kann $bar .= $foo;


75
2017-08-18 17:50


Ursprung


Antworten:


Nee. Aber du kannst es tun

$foo = "bar" . $foo

108
2017-08-18 17:52



Du könntest dafür immer deine eigene Funktion machen:

function prepend($string, $chunk) {
     if(!empty($chunk) && isset($chunk)) {
        return $string.$chunk;
     }
     else {
        return $string;
     }
}

$string wäre das Stück, das Sie vorgeben und $chunk wäre der Text, dem etwas vorangestellt werden soll.

Sie könnten sagen, dass die Prüfungen optional sind, aber wenn Sie das dort haben, müssen Sie sich nicht darum sorgen, dass Sie versehentlich einen Nullwert übergeben.


4
2017-08-18 18:03



Ich weiß, dass dies vor einiger Zeit gestellt / beantwortet wurde, aber ich gebe diese Antwort, da sie funktional äquivalent ist, obwohl sie kein Zuweisungsoperator ist und niemand ihre Verwendung für die allgemeine String-Verkettung kommentiert hat.

Vielleicht möchten Sie in die Verwendung der suchen sprintf (Dokumentation) Familie von Funktionen zur Stringverkettung. Es bietet viel mehr Desinfektion und Benutzerfreundlichkeit als nur zwei Zeichenfolgen mit Zuweisungsoperatoren zu kombinieren.

$foo = 'foo';

$append = sprintf('%1$s%2$s', $foo, 'bar');
var_dump($append);
/* string(6) "foobar" */

$prepend = sprintf('%1$s%2$s', 'bar', $foo);
var_dump($prepend);
/* string(6) "barfoo" */

$prependInvert = sprintf('%2$s%1$s', $foo, 'bar');
var_dump($prependInvert);
/* string(6) "barfoo" */

$wrap = sprintf('%2$s%1$s%2$s', $foo, 'bar');
var_dump($wrap);
/* string(6) "barfoobar" */

Ich benutze normalerweise vsprintf, da das Arbeiten mit Arrays einfacher ist, Wertpositionen zu verwalten als einzelne Argumente.

$vprepend = vsprintf('%2$s%1$s', array('foo', 'bar'));
var_dump($vprepend);
/* string(6) "barfoo" */

Auch mit einer Reihe von Werten kann man einfach implode die resultierende Menge von Werten für die einfache Kettenverkettung.

 var_dump(implode('', array('bar', 'foo')));
 /* string(6) "barfoo" */

3
2018-02-25 15:07



Sie können die integrierte Funktion umbrechen substr_replace, wobei die Argumente $ start und $ length auf 0 gesetzt werden können, wodurch der $ -Ersatz zu $ ​​string vorangestellt wird und das Ergebnis wie folgt zurückgegeben wird:

function prepend(& $string, $prefix) {
    $string = substr_replace($string, $prefix, 0, 0);
}

Eine Beispielverwendung der Hilfsfunktion wäre:

$email_message = "Jonathan";
$appropriate_greeting = "Dear ";
prepend($email_message, $appropriate_greeting);
echo $email_message;

Wenn Sie in der prozeduralen Programmierung sind, ist das.


2
2017-12-06 18:58



Drehen Blakethepattons Kommentar in eine Antwort (danke), ist eine Möglichkeit, dies für längere Variablennamen besser zu tun, mit a Referenz zu der Variablen wie folgt:

$f = &$foo; $f = "bar{$f}";

Dies spart Ihnen das Tippen über die Antwort von Eric V Wenn Ihr ursprünglicher Variablenname 12 Zeichen oder länger ist.

Eine Alternative auf einer Linie:

$f = 'bar' . ($f = &$foo);

1
2018-04-24 13:33