Pertanyaan Apa yang setara dengan. = Untuk menambahkan ke awal string dalam PHP?


Hanya ingin tahu jika ada sesuatu seperti. = Untuk menambahkan teks ke awal string, misalnya:

$foo =. 'bar';

yang tidak berfungsi.

Edit: contoh awalnya $foo =. $bar; yang dapat dicapai dengan $bar .= $foo;


75
2017-08-18 17:50


asal


Jawaban:


Nggak. Tetapi Anda bisa melakukannya

$foo = "bar" . $foo

108
2017-08-18 17:52



Anda selalu dapat membuat fungsi Anda sendiri untuk itu:

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

$string akan menjadi bagian yang ingin Anda tambahkan dan $chunk akan menjadi teks yang Anda inginkan sesuatu yang ditambahkan ke atasnya.

Anda dapat mengatakan bahwa cek itu opsional, tetapi dengan memiliki itu di sana Anda tidak perlu khawatir tentang menyerahkan nilai nol secara tidak sengaja.


4
2017-08-18 18:03



Saya tahu ini diminta / dijawab beberapa waktu yang lalu, tetapi memberikan jawaban ini karena secara fungsional setara meskipun tidak menjadi operator penugasan dan tidak ada yang berkomentar tentang penggunaannya untuk penggabungan string umum.

Anda mungkin ingin melihat ke dalam penggunaan sprintf (dokumentasi) keluarga fungsi untuk penggabungan string. Ini memberikan lebih banyak sanitasi dan kegunaan daripada hanya menggabungkan dua string dengan operator penugasan.

$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" */

Saya biasanya menggunakan vsprintf, karena bekerja dengan array lebih mudah untuk mengelola posisi nilai daripada argumen individu.

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

Juga dengan berbagai nilai, seseorang dapat dengan mudah implode himpunan nilai yang dihasilkan untuk penggabungan string sederhana.

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

3
2018-02-25 15:07



Anda dapat membungkus fungsi bawaan substr_replace, di mana argumen $ start dan $ length dapat diatur ke 0, yang menambahkan $ replacement ke $ string dan mengembalikan hasilnya, seperti:

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

Contoh penggunaan fungsi helper adalah:

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

Jika Anda ke dalam pemrograman prosedural, itu.


2
2017-12-06 18:58



Berbalik Komentar Blakethepatton menjadi jawaban (terima kasih), cara untuk melakukan ini dengan lebih rapi untuk nama variabel yang lebih panjang adalah dengan menggunakan a referensi ke variabel sebagai berikut:

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

Ini akan menghemat waktu Anda mengetik dijawab oleh Eric V jika nama variabel asli Anda adalah 12 karakter atau lebih lama.

Alternatif pada satu baris:

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

1
2018-04-24 13:33