String pada PHP

String adalah sejenis data yang berupa teks. Teks tersebut dapat berisi karakter alfanumerik - angka maupun huruf. Bahasa pemrograman lain pada umumnya bersifat Strongly Typed, yaitu setiap variabel pada program tipe datanya tertentu dan tidak dapat diubah. PHP tidak seperti itu, karena variabel di dalam PHP tipe datanya dapat berubah-ubah. Sampai-sampai ada yang bilang PHP bersifat Stringly Typed karena setiap variabel di dalam PHP cenderung dapat dianggap sebagai string.

String literal pada PHP

String pada PHP dapat dinyatakan dalam tanda petik satu ' atau tanda petik dua ". Bila dibandingkan, string dengan petik satu menampilkan teks di dalam tanda tersebut sebagaimana adanya. Sedangkan string-petik-dua dapat berisi variabel. Sebagai contoh:

<?php
$nama = "Fandi Ganteng";
$petikSatu = 'Pada petik satu, $nama tetap muncul sebagai $nama<br />';
$petikDua = "Sedangkan pada petik dua, \$nama menjadi: $nama<br /><br />";
echo $petikSatu;
echo $petikDua;
//Contoh penggunaan sederhana
$harga = 20000;
$strHarga = number_format($harga, 0, ",", ".");
echo "Harga Rp.$strHarga<br />";
?>

Output:

Pada petik satu, $nama tetap muncul sebagai $nama
Sedangkan pada petik dua, $nama menjadi: Fandi Ganteng

Harga Rp.20.000

Keluaran dari contoh program di atas sudah cukup menjelaskan perbedaan petik satu dan petik dua. Baik dimasukkan ke variabel terlebih dahulu, ataupun langsung dikeluarkan lewat fungsi echo, literal string tetap memiliki sifat seperti yang dijelaskan di atas.

Pada contoh di atas, digunakan juga dua hal baru, yaitu escape string dan fungsi number_format. Fungsi number_format digunakan untuk memformat angka. Penggunaannya:

number_format($angka, $jumlahDesimal[, $tandaDesimal][, $pemisahRibuan])

Dimana:

  • $angka adalah variabel angka yang akan diformat,
  • $jumlahDesimal adalah integer yang menyatakan jumlah angka di belakang koma,
  • Argumen yang diberi tanda kurung siku [] bersifat opsional,
  • $tandaDesimal adalah pemisah antara bilangan dengan pecahan. Defaultnya berupa format barat, yaitu tanda titik.
  • $pemisahRibuan, adalah pemisah setiap tiga angka, misalnya pada angka ribuan atau jutaan. Defaultnya berupa tanda koma.

Escape String pada PHP

Terkadang kita butuh mengetikkan karakter khusus seperti petik satu dan dua (' dan "), atau tanda dolar $ di dalam string. Untuk itu, kita perlu menggunakan sesuatu yang disebut Escape Sequence atau Escape String. Berikut daftar Escape String yang dapat dipakai:

  • \$ untuk mengetikkan tanda $ pada string petik dua,
  • \" untuk mengetikkan petik dua,
  • \' untuk mengetikkan petik satu,
  • \\ untuk mengetikkan back-slash \,
  • \n untuk newline (baris-baru / enter),
  • \r untuk carriage return,
  • \t untuk tab

Contoh penggunaan:

<?php
$nama = "Budi Santoso";
echo "Isi variabel \$nama adalah \"$nama\"";
?>

Output:

Isi variabel $nama adalah "Budi Santoso"

Variabel objek dan array dalam string

Objek dan Array pada PHP baru akan dibahas pada topik-topik berikutnya. Akan tetapi ada baiknya bila kita sedikit membahas objek dan array di sini terkait dengan string.

String-petik-dua seperti yang dijelaskan di atas, dapat juga berisi objek atau array, seperti pada contoh program berikut:

<?php
$objek = new stdClass();
$objek->nilai = 30;
echo "Nilai pada objek: $objek->nilai<br />";
$perabots[] = "Kursi";
$perabots[] = "Meja";
$perabots[] = "Lemari";
echo "Perabotan kita: $perabots[0], $perabots[1], $perabots[2]<br />";
$harga['kursi'] = number_format(200000,0,",",".");
$harga['meja'] = number_format(420000,0,",",".");
echo "Kursi: Rp.$harga[kursi], Meja: Rp.$harga[meja]";
?>

Output:

Nilai pada objek: 30
Perabotan kita: Kursi, Meja, Lemari
Kursi: Rp.200.000, Meja: Rp.420.000

Pada contoh di atas, $objek merupakan suatu objek, $objek->nilai merupakan field pada objek $objek. Field pada objek bisa dimasukkan langsung ke dalam string seperti contoh di atas. Akan tetapi field level dua seperti misalnya $objek->barang->harga, tidak dapat langsung dimasukkan ke dalam string. Begitu juga dengan properties atau method pada objek, misalnya $objek->nilaiHuruf() atau $objek->format($angka).

$perabots merupakan array berindex angka, dan $harga merupakan array berindex string. Index array dapat diketik seperti biasa di dalam string. Tetapi untuk array berindex string, nama index diketik tanpa tanda petik satu. Bila petik satu disertakan di dalam string untuk menampilkan variabel array, malah akan menyebabkan error. Perlu diketahui juga bahwa array dua tingkat juga tidak dapat dimasukkan ke dalam string. Bila array $koordinat[20][10] dimasukkan ke dalam string, tidak akan tampil seperti yang diharapkan.

Menyambung String pada PHP

Tanda titik . berfungsi sebagai string concatenation operator pada PHP. Atau dalam Bahasa Indonesia kurang lebih: operator penyambung string. Terdapat juga operator .= yang menambahkan string baru pada string. Meskipun variabel dapat dituliskan langsung di dalam string, fungsi pada PHP dan beberapa jenis variabel tidak dapat dimasukkan ke dalam string. Berikut contoh penggunaan operator penyambung string:

<?php
$namaDepan = "Abdi";
$namaBelakang = "Gunawan";
$nama = $namaDepan." ".$namaBelakang;
$kalimat = "Hai apa kabar ";
$kalimat .= $nama;
$kalimat .= ", Salam LUAR BIASA";
echo $kalimat;
?>

Output:

Hai apa kabar Abdi Gunawan, Salam LUAR BIASA

Multiline string pada PHP

Terdapat sintaks heredoc dan newdoc pada PHP untuk menuliskan string PHP yang berisikan lebih dari satu baris teks. Sintaks ini jarang digunakan, tetapi tetap dijelaskan di sini sebagai pelengkap saja. Anda dapat melewatkan bagian ini dan lanjut ke topik berikutnya.

<?php
echo "<pre>";
$engine = "innodb";
//heredoc
echo <<<TERSERAH
CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=$engine;\n\n
TERSERAH;
//newdoc
echo <<<'ABC'
CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=$engine;\n\n
ABC;
//cara sederhana
echo "
CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=$engine;
";
echo "</pre>";
?>

Output:

CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=innodb;

CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=$engine;\n\n
CREATE TABLE buku (
id INT PRIMARY KEY,
judul VARCHAR(50),
pengarang VARCHAR(50),
tahun_terbit INT
) engine=innodb;

heredoc sama dengan string-petik-dua, sedangkan newdoc sama dengan string-petik-satu. Variabel dan escape string diterjemahkan pada sintaks heredoc, sedangkan pada newdoc tidak. Kita dapat mengetikkan enter saja pada string seperti pada contoh baris program yang terakhir, tidak perlu harus sampai menggunakan sintaks heredoc dan newdoc.

Tetapi bila menurut Anda sintaks heredoc dan newdoc ini lebih rapi, Anda dapat mencoba menggunakannya. Tapi berhubung sintaks ini tidak populer, Saya menyarankan menghindarinya, karena mungkin saja suatu saat sintaks ini akan deprecated / ditinggalkan oleh PHP.