Kalimat dalam program hampir selalu dirakit dari potongan-potongan: sapaan tetap, nama dari variabel, angka hasil perhitungan, lalu tanda baca penutup. PHP menyediakan operator titik (.) untuk menggabungkan string — operasi yang disebut concatenation — beserta bentuk gabungannya .=. Pada chapter ini kita akan mempelajari kedua operator tersebut, perilaku koersi saat angka ikut digabungkan, dan urutan evaluasi antara titik dengan operator aritmatika yang berubah sejak PHP 8.
Operator Penggabung String #
PHP hanya memiliki dua operator yang khusus bekerja untuk string:
| Operator | Nama | Contoh | Setara dengan |
|---|---|---|---|
. | Concatenation | $a . $b | — |
.= | Concatenation assignment | $a .= $b | $a = $a . $b |
Operator . menghasilkan string baru yang isinya operan kiri langsung diikuti operan kanan. Operator .= menumpuk operan kanan di belakang isi terkini variabel di kiri — pola yang sama dengan += pada chapter Operator Assignment
:
<?php
$namaDepan = "Budi";
$namaBelakang = "Santoso";
$namaLengkap = $namaDepan . " " . $namaBelakang;
echo $namaLengkap . "!\n";
$kalimat = "Halo";
$kalimat .= ", ";
$kalimat .= $namaLengkap;
echo $kalimat . "\n";Output yang Dihasilkan:
Budi Santoso!
Halo, Budi SantosoBaris $namaLengkap = $namaDepan . " " . $namaBelakang; merakit "Budi", satu spasi, dan "Santoso" menjadi "Budi Santoso". Perhatikan bahwa spasi tidak ditambahkan otomatis — operator . menempelkan teks apa adanya, jadi spasi antar kata harus Anda sediakan sendiri. Tiga baris terakhir memperlihatkan .= yang menumpuk teks secara bertahap: variabel $kalimat tumbuh dari "Halo" menjadi "Halo, Budi Santoso".
Koersi Angka Saat Penggabungan #
Operator . menerima operan apa pun dan mengonversi non-string menjadi string lebih dahulu — inilah koersi (pelubukan tipe) yang berkebalikan dari type juggling pada perbandingan. Angka menjadi representasi teksnya, boolean menjadi "1" untuk true dan "" untuk false, sedangkan null menjadi string kosong:
<?php
var_dump(1 . 2);
var_dump(7 . 0.5);
var_dump("Harga: " . 50000);
var_dump("Aktif: " . true);
var_dump("Catatan: " . null);Output yang Dihasilkan:
string(2) "12"
string(4) "70.5"
string(12) "Harga: 50000"
string(8) "Aktif: 1"
string(9) "Catatan: "Ekspresi 1 . 2 menghasilkan string "12", bukan angka 3 — operator titik tidak pernah menjumlahkan. Angka 0.5 menjadi teks "0.5" apa adanya, sehingga 7 . 0.5 menghasilkan "70.5". Nilai true menjadi "1", sedangkan null lenyap menjadi string kosong sehingga "Catatan: " . null sama dengan "Catatan: ". Koersi seperti ini nyaman untuk merakit pesan, tetapi berhati-hatilah saat kedua operan sebenarnya ingin dijumlahkan sebagai angka — gunakan tanda kurung agar maksud kode terbaca jelas.
Precedence Titik vs Aritmatika #
Apa yang terjadi jika penggabungan dan penjumlahan berada dalam satu ekspresi? Sejak PHP 8.0, operator . memiliki precedence lebih rendah daripada seluruh operator aritmatika dan shift — artinya perhitungan angka selalu selesai lebih dahulu, baru hasilnya digabungkan:
<?php
var_dump("Total: " . 50000 * 2);
var_dump("Hasil: " . 2 + 3);Output yang Dihasilkan:
string(13) "Total: 100000"
string(8) "Hasil: 5"Pada baris pertama, 50000 * 2 dihitung lebih dahulu menjadi 100000, lalu digabungkan menghasilkan "Total: 100000". Baris kedua juga dievaluasi angkanya dahulu: 2 + 3 menjadi 5, sehingga hasilnya "Hasil: 5".
Konkatenasi vs Interpolasi #
Menggabungkan teks bisa dilakukan dua cara: operator . atau string interpolation pada tanda kutip ganda yang sudah kita kenal di chapter Variabel
. Keduanya menghasilkan keluaran yang sama:
<?php
$nama = "Siti";
$poin = 95;
echo "Selamat, " . $nama . "! Poin Anda: " . $poin . "\n";
echo "Selamat, $nama! Poin Anda: $poin\n";Output yang Dihasilkan:
Selamat, Siti! Poin Anda: 95
Selamat, Siti! Poin Anda: 95Kedua baris mencetak pesan yang identik. Interpolasi menang untuk keterbacaan saat menyisipkan banyak variabel sederhana, sedangkan konkatenasi menang saat merakit ekspresi — "Total: " . ($harga * $jumlah) tidak bisa dinyatakan dengan interpolation biasa karena butuh tanda kurung kurawal kompleks. Pada PHP modern keduanya sama-sama cepat; pilihlah berdasarkan kejelasan, bukan mitos performa. Pembahasan menyeluruh tentang kedua gaya ini tersedia di chapter String Interpolation
.
Berkas contoh.php pada bagian bawah halaman merangkum seluruh contoh chapter ini dalam satu program yang bisa dijalankan langsung.
Referensi #
- Operator String — Manual PHP
- Perubahan Tidak Kompatibel PHP 8.0 — Manual PHP
- String Interpolation — Section String dan Text Processing
Ringkasan #
Operator . menggabungkan dua string dan .= menumpuk teks di belakang isi variabel, dengan koersi otomatis untuk non-string: angka menjadi teksnya, true menjadi "1", false dan null menjadi string kosong. Sejak PHP 8, titik dievaluasi setelah operator aritmatika sehingga "Hasil: " . 2 + 3 menghasilkan "Hasil: 5" — kebalikan dari perilaku PHP 7. Selanjutnya kita berpindah dari teks ke wadah data: operator array untuk menggabungkan dan membandingkan array.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
// contoh.php — rangkuman Operator String
// Jalankan dengan: php contoh.php
echo "== Penggabungan dasar (.) ==\n";
$namaDepan = "Budi";
$namaBelakang = "Santoso";
$namaLengkap = $namaDepan . " " . $namaBelakang;
echo $namaLengkap . "!\n";
echo "\n== Penumpukan teks (.=) ==\n";
$kalimat = "Halo";
$kalimat .= ", ";
$kalimat .= $namaLengkap;
echo $kalimat . "\n";
echo "\n== Koersi angka dan nilai lain ==\n";
var_dump(1 . 2);
var_dump(7 . 0.5);
var_dump("Harga: " . 50000);
var_dump("Aktif: " . true);
var_dump("Catatan: " . null);
echo "\n== Precedence titik vs aritmatika (PHP 8) ==\n";
var_dump("Total: " . 50000 * 2);
var_dump("Hasil: " . 2 + 3);
var_dump("Hasil: " . (2 + 3));
echo "\n== Konkatenasi vs interpolasi ==\n";
$nama = "Siti";
$poin = 95;
echo "Selamat, " . $nama . "! Poin Anda: " . $poin . "\n";
echo "Selamat, $nama! Poin Anda: $poin\n";