PHP #12 - Bekerja dengan String (Bag. I)

12 Sep 2020 • ⏳ ~ 6 menit

 

String Concatenation

Sesuai namanya, concatenation berarti penggabungan. Dengan demikian, string concatenation berarti penggabungan string atau variabel yang berisi teks sehingga menjadi satu kesatuan. Pada PHP, kita dapat menyematkan tanda . sebagai operator string concatenation di antara kedua string atau variabel yang hendak digabungkan pada echo atau print.

Berikut adalah contoh penerapannya:

<?php
  $name = 'Regg';
  $address = 'Jl. Cemara' . ' ' . 'No. 7A';
  $city = 'Medan';
  $regency = 'Sumatra Utara';
  $separator = ' - ';


  echo 'Halo! Nama saya' . $name . '. Saya tinggal di ' . $address;
  #                          ↓                                ↓
  #     Halo! Nama saya    Regg     . Saya tinggal di Jl. Cemara No. 7A

  print $city . $separator . $regency;
  #       ↓         ↓            ↓
  #     Medan       -      Sumatra Utara
?>
Halo! Nama saya Regg. Saya tinggal di Jl. Cemara No. 7A
Medan - Sumatra Utara

Sama seperti string concatenation, kita juga dapat menggunakan echo tanpa tanda kurung untuk menggabungkan beberapa string atau variabel yang berisi teks menggunakan tanda ,.

Berikut adalah contoh penerapannya:

<?php
  $name = 'Regg';
  $address = 'Jl. Cemara' . ' ' . 'No. 7A';
  $city = 'Medan';
  $regency = 'Sumatra Utara';
  $separator = ' - ';


  echo 'Halo! Nama saya', $name, '. Saya tinggal di ', $address;
  #                         ↓                              ↓
  #     Halo! Nama saya   Regg    . Saya tinggal di Jl. Cemara No. 7A
  
  echo $city, $separator, $regency;
  #      ↓         ↓          ↓
  #    Medan       -    Sumatra Utara
?>
Halo! Nama saya Regg. Saya tinggal di Jl. Cemara No. 7A
Medan - Sumatra Utara

Pada keadaan tertentu, menggunakan echo dengan tanda , lebih menguntungkan dibandingkan dengan menggunakan echo dengan tanda .. Hal ini dikarenakan penggunaan tanda , akan menampilkan output berdasarkan urutan parameter yang diberikan. Sedangkan, penggunaan tanda . akan memperhatikan presedensi operator.

Dengan memperhatikan presedensi operator, ekspresi yang memiliki operasi dengan presedensi prioritas akan dieksekusi. Hal ini mengakibatkan hasil output tidak sesuai dengan harapan. Untuk mengatasi hal ini, kita dapat memanfaatkan tanda kurung untuk melakukan manipulasi presedensi.

Perhatikan contoh berikut!

<?php
  $name = 'Steven';
  $short_name = 'Stev';
  $age = 2020 - 2001;


  echo 'Hello ', strlen($name) > 4 ? $name : 'World', '!', ' Age: ', $age + 6;
  #              |---------------------↓-----------|                 |---↓---|
  #     Hello                        Steven            !     Age:       25

  echo 'Hello ', strlen($short_name) > 4 ? $short_name : 'World', '!', ' Age: ', $age + 6;
  #              |------------------------------------------↓--|                 |---↓---|
  #     Hello                                             World    !     Age:       25

  // String concatenation menggunakan tanda . dieksekusi berdasarkan presedensi
  // sehingga hasil penggabungan tidak sesuai harapan!
  echo 'Hello ' . strlen($name) > 4 ? $name : 'World' . '!' . ' Age: ' . $age + 6;
  #                                                                      |---↓---|
  #                                                                         25

  echo 'Hello ' . (strlen($name) > 4 ? $name : 'World') . '!' . ' Age: ' . ($age + 6);
  #               |----------------------↓------------|                    |----↓---|
  #     Hello                          Steven              !      Age:         25
?>
Hello Steven! Age: 25
Hello World! Age: 25
25
Hello Steven! Age: 25

String Interpolation

Selain menggunakan string concatenation, kita juga dapat menggunakan string interpolation untuk menginterpolasi (menyisipkan) sebuah variabel ke dalam string. PHP akan melakukan interpretasi variabel dan mengganti variabel dengan nilainya saat memroses string. String interpolation hanya dapat bekerja pada sintaks tanda kutip dua atau heredoc.

Berikut adalah contoh penerapannya:

<?php
  $item = 'buku';
  $count = 3;


  echo "Stok $item terdapat $count buah.";
  #            ↓               ↓
  #     Stok buku  terdapat    3   buah.

  // Penggunaan single quote menyebabkan variabel
  // $item dan $count ditampilkan tanpa diinterpretasi.
  echo 'Stok $item terdapat $count buah.';
  #     Stok $item terdapat $count buah.
?>
Stok buku terdapat 3 buah.
Stok $item terdapat $count buah.

Dalam string interpolation juga mendukung penggunaan format sintaks kompleks (curly) yang bertujuan untuk membungkus variabel dalam tanda kurung kurawal. Penggunaan tanda ini sangat bermanfaat untuk menghilangkan ambiguitas antara konteks penggunaan variabel dan string secara bersamaan.

Perhatikan contoh berikut!

<?php
  $ticket_price = 100000;


  echo "Tiket seminar tersebut dibandrol seharga Rp{$ticket_price}an!";
  #                                                        ↓
  #     Tiket seminar tersebut dibandrol seharga Rp     100000    an!

  // Baris ini menghasilkan pesan error
  // karena variabel $ticket_pricesan tidak dideklarasi
  echo "Tiket seminar tersebut dibandrol seharga Rp$ticket_pricesan!";
  # Notice: Undefined variable: ticket_pricesan

Hal utama yang perlu diperhatikan adalah penggunaan format sintaks kompleks hanya akan memroses variabel yang diawali dengan tanda $ dalam string interpolation. Dengan demikian, sintaks ini tidak dapat memroses ekspresi apapun. Apabila hendak menggabungkan string dengan ekspresi, kita dapat kembali memanfaatkan string concatenation.

Perhatikan contoh berikut!

<?php
  $first_number = 100;
  $second_number = 20;
  $numbers = [1, 2, 3, 4, 5];


  // Ekspresi tidak dapat diinterpolasi
  echo "1996 + 2001 = {1996 + 2001}";
  #     1996 + 2001 = {1996 + 2001}

  echo "1996 + 2001 = ", 1996 + 2001;
  #                           ↓
  #     1996 + 2001 =       3997

  // Baris ini menghasilkan pesan error
  // karena variabel operator + tidak dikenali dalam interpolasi
  echo "$first_number + $second_number = {$first_number + $second_number}";
  # Parse error:  syntax error, unexpected '+', expecting :: (T_PAAMAYIM_NEKUDOTAYIM)

  echo "$first_number + $second_number = " . ($first_number + $second_number);
  #          ↓                 ↓                            ↓
  #         100       +       20       =                   120
  
  // Fungsi tidak dapat diinterpolasi
  echo "Hasil akar dari angka 100 adalah {sqrt(100)}";
  #     Hasil akar dari angka 100 adalah {sqrt(100)}

  echo "Hasil akar dari angka 100 adalah " . sqrt(100);
  #                                             ↓
  #     Hasil akar dari angka 100 adalah       10
  
  echo "Akses indeks ke-3 pada array numbers adalah {$numbers[3]}.";
  #                                                       ↓
  #     Akses indeks ke-3 pada array numbers adalah       4      .
?>
1996 + 2001 = {1996 + 2001}
1996 + 2001 = 3997
Parse error:  syntax error, unexpected '+', expecting :: (T_PAAMAYIM_NEKUDOTAYIM)
100 + 20 = 120
Hasil akar dari angka 100 adalah {sqrt(100)}
Hasil akar dari angka 100 adalah 10
Akses indeks ke-3 pada array numbers adalah 4.

Heredoc dan Nowdoc

1. Heredoc

Heredoc adalah cara lain penulisan string pada PHP yang lebih sederhana. Dengan heredoc, kita dapat seolah-olah menulis string dengan double quote tanpa harus menambahkan escape character pada tanda kutip dua. Tag pembuka heredoc dimulai dengan tanda <<< dan diikuti dengan sebuah identifier, serta diakhiri dengan nama identifier yang sama. Peletakan akhir identifier pada heredoc harus diletakkan pada baris baru tersendiri.

Penulisan identifier memiliki kaidah tidak boleh terdapat white spaces baik sebelum maupun sesudah penulisan identifier. Pada akhir identifier juga diakhiri dengan tanda ;.

Perhatikan contoh berikut:

<?php
  $first_sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed hendrerit enim, id feugiat erat.";

  $lorem = <<<LOREM
$first_sentence "Maecenas at urna quis nulla efficitur convallis." Integer ultricies lorem ac odio dictum sodales. In eleifend lacus lorem, ac finibus nulla imperdiet a.
LOREM;

  echo $lorem;
?>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed hendrerit enim, id feugiat erat. "Maecenas at urna quis nulla efficitur convallis." Integer ultricies lorem ac odio dictum sodales. In eleifend lacus lorem, ac finibus nulla imperdiet a.

2. Nowdoc

Pada konsepnya, penerapan nowdoc hampir sama seperti heredoc. Hal yang membedakan adalah nowdoc berperan seperti versi tanda kutip satu pada heredoc. Hal ini berarti nowdoc tidak melakukan interpretasi terhadap variabel dan escape character.

Penulisan nowdoc pun hampir sama seperti heredoc. Namun, identifier pada nowdoc diapit dengan tanda kutip satu.

Perhatikan contoh berikut:

<?php
  $first_sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed hendrerit enim, id feugiat erat.";

  $lorem = <<<'LOREM'
$first_sentence "Maecenas at urna quis nulla efficitur convallis." Integer ultricies lorem ac odio dictum sodales. In eleifend lacus lorem, ac finibus nulla imperdiet a.
LOREM;

  echo $lorem;
?>
$first_sentence "Maecenas at urna quis nulla efficitur convallis." Integer ultricies lorem ac odio dictum sodales. In eleifend lacus lorem, ac finibus nulla imperdiet a.
PHP

PHP #13 - Bekerja dengan String (Bag. II)

PHP #11 - Operator (Bag. II)

comments powered by Disqus