Interpolation nyaman, tetapi chapter sebelumnya menutup dengan satu kenyataan: pemanggilan fungsi tidak bisa hidup di dalam string. Saat nilai perlu dihitung, diformat, atau diambil dari hasil fungsi, kita kembali ke senjata paling dasar PHP: operator penggabung string — si titik (.). Anda telah berkenalan singkat dengan operator ini pada Chapter Operator String
; chapter ini mengangkatnya menjadi keterampilan penyusunan teks yang utuh: penggabungan bertahap dengan .=, menyusun string panjang multi-baris, memilih antara concatenation dan heredoc, sampai menggabungkan seluruh isi array dalam satu panggilan implode().
Menggabungkan dengan Operator Titik #
Operator titik menerima dua operand dan menghasilkan string baru berisi keduanya berdampingan. Operand yang bukan string — angka misalnya — dikonversi otomatis menjadi representasi teksnya:
<?php
$namaDepan = "Budi";
$namaBelakang = "Santoso";
$namaLengkap = $namaDepan . " " . $namaBelakang;
echo $namaLengkap . "\n";Output yang Dihasilkan:
Budi SantosoTiga operand digabung berurutan: isi $namaDepan, satu spasi sebagai perekat, lalu isi $namaBelakang. Pola yang sama bekerja untuk angka yang perlu ditempelkan ke label:
<?php
$harga = 16500;
$jumlah = 2;
echo "Harga satuan: Rp" . $harga . "\n";
echo "Total: Rp" . ($harga * $jumlah) . "\n";Output yang Dihasilkan:
Harga satuan: Rp16500
Total: Rp33000Nilai int pada $harga dan hasil $harga * $jumlah otomatis menjadi teks saat bergabung dengan string — 16500 tercetak sebagai Rp16500 tanpa perlu konversi manual. Perhatikan tanda kurung pada baris terakhir: ekspresi aritmetika dikerjakan lebih dulu, hasilnya (33000) baru digabungkan. Peran tanda kurung ini akan dibedah tuntas pada bagian Prioritas Operator.
Menambah Isi dengan Operator .= #
Menggabungkan ke variabel yang sama berulang kali bisa dipersingkat dengan operator assignment gabungan .=. Operator ini membaca nilai variabel, menempelkan operand kanan di belakangnya, lalu menyimpan hasilnya kembali — anggota keluarga operator assignment yang kita kenal pada Chapter Operator Assignment
:
<?php
$laporan = "Laporan Penjualan\n";
$laporan .= "----------------\n";
$laporan .= "Buku : 3 item\n";
$laporan .= "Pena : 5 item\n";
echo $laporan;Output yang Dihasilkan:
Laporan Penjualan
----------------
Buku : 3 item
Pena : 5 itemSetiap baris $laporan .= ... menumbuhkan isi variabel satu bagian demi satu bagian. Pola ini bersinar ketika bagian-bagian datang dari sumber berbeda — sebagian dari kondisi if, sebagian dari hasil foreach — karena string akhir dirakit secara bertahap, bukan sekaligus.
Menyusun String Panjang #
String multi-baris juga bisa dirakit dengan operator titik yang ditulis menggantung di akhir baris. PHP menganggap statement belum selesai selama titik-koma belum ditemukan, sehingga ekspresi boleh dilipat ke beberapa baris:
<?php
$email = "Halo, Budi!\n"
. "Pesanan Anda sudah kami kirim.\n"
. "Nomor resi: JRX-12345.\n"
. "Terima kasih.\n";
echo $email;Output yang Dihasilkan:
Halo, Budi!
Pesanan Anda sudah kami kirim.
Nomor resi: JRX-12345.
Terima kasih.Setiap baris diakhiri operator titik agar parser tahu bahwa ekspresi masih berlanjut, dan baris berikutnya menjorok agar mata langsung melihat bahwa baris tersebut adalah kelanjutan. Bandingkan dengan versi heredoc yang menghasilkan teks persis sama:
<?php
$email = <<<EMAIL
Halo, Budi!
Pesanan Anda sudah kami kirim.
Nomor resi: JRX-12345.
Terima kasih.
EMAIL;
echo $email, "\n";Output yang Dihasilkan:
Halo, Budi!
Pesanan Anda sudah kami kirim.
Nomor resi: JRX-12345.
Terima kasih.Menggabungkan Daftar dengan implode() #
Menggabungkan elemen array adalah pekerjaan yang begitu sering hingga PHP menyediakan fungsi khusus. Mari kita bandingkan cara manual dengan cara yang benar:
<?php
$buah = ["mangga", "jeruk", "apel"];
$daftarManual = "";
foreach ($buah as $nama) {
$daftarManual .= $nama . ", ";
}
echo "Manual : " . $daftarManual . "\n";
echo "Implode: " . implode(", ", $buah) . "\n";
echo "Tag: " . implode(" # ", ["php", "string", "dasar"]) . "\n";Output yang Dihasilkan:
Manual : mangga, jeruk, apel,
Implode: mangga, jeruk, apel
Tag: php # string # dasarLoop manual menyisakan masalah klasik: pemisah , ikut tercetak di ujung (mangga, jeruk, apel, ) karena setiap elemen dibubuhi pemisah tanpa tahu dirinya yang terakhir. implode() menangani logika tersebut dengan benar — pemisah hanya ditempatkan di antara elemen, pertama tetap di depan, tidak ada yang menempel di ujung. Fungsi ini juga menerima pemisah bebas, seperti # pada baris tag, dan punya nama alias join() untuk kenyamanan. Untuk arah sebaliknya — memecah string menjadi array — kita akan bertemu dengan explode() pada chapter operasi string berikutnya.
Prioritas Operator: Aritmatika Duluan #
Satu fakta prioritas operator yang wajib diketahui sebelum Anda mencampur titik dengan tanda tambah. Sejak PHP 8.0, operator . berprioritas lebih rendah daripada *, /, %, +, dan -:
<?php
echo "Hasil: " . 2 + 3 . "\n";
$harga = 16500;
$jumlah = 2;
echo "Total: Rp" . ($harga * $jumlah) . "\n";Output yang Dihasilkan:
Hasil: 5
Total: Rp33000Baris pertama mudah terlihat salah duga: banyak yang menyangka PHP membacanya kiri-ke-kanan menjadi ("Hasil: " . 2) + 3 — string dijumlahkan dengan angka. Kenyataannya 2 + 3 dikerjakan lebih dulu karena + lebih kuat, sehingga hasilnya Hasil: 5. Pada PHP 7 urutannya memang dahulu terbalik seperti dugaan itu; perubahan prioritas di PHP 8.0 membuat campuran aritmatika dan penggabungan berperilaku lebih wajar, tetapi kode lama yang mengandalkan urutan lama bisa berubah makna saat dimigrasikan.
Ringkasan #
Operator titik menggabungkan dua string dan mengonversi operand non-string secara otomatis, sementara .= menumbuhkan isi variabel secara bertahap. String panjang dirakit dengan titik menggantung di akhir baris atau disusun lebih nyaman lewat heredoc, array digabungkan sekaligus dengan implode() yang menempatkan pemisah hanya di antara elemen, dan sejak PHP 8.0 aritmetika selalu dikerjakan sebelum penggabungan. Dengan interpolation dan concatenation kini lengkap di tangan Anda, kita siap masuk ke operasi teks sehari-hari: mencari dan mengganti isi string, dimulai dari Chapter Replacing Text
.