Tutorial Belajar PHP Part 25: Pengertian dan Jenis-jenis Operator Assignment dalam PHP

Dalam tutorial kali ini saya akan membahas tentang Pengertian dan Jenis-jenis Operator Assignment (Assignment Operators) dalam PHP, serta perbedaan antara Assignment by Value dan Assignment by References.


Pengertian Operator Assignment dalam PHP

Operator assignment adalah operator untuk menambahkan, atau memasukkan sebuah nilai kedalam variabel. PHP memiliki 3 jenis operator assigment, dan kita telah menggunakan 2 diantaranya, yaitu tanda = untuk mengdefenisikan variabel, dan tanda => untuk mengisi nilai dari array.


Jenis-jenis Operator Assigment dalam PHP

PHP mengenal 3 jenis operator assigment, yaitu Assigment dengan Nilai (Assignment by Value), Assigment Array, dan Assigment dengan Referensi (Assignment by Reference).

Pengertian Operator Assigment dengan Nilai (Assignment by Value)

Assigment dengan Nilai atau dalam istilah pemograman dikenal dengan Assignment by Value , adalah proses pemberian nilai kedalam sebuah variabel dengan meng-copy nilai atau value dari variabel lain.

PHP menggunakan tanda sama dengan (=) untuk Assignment by Value. Secara tidak sadar, kita telah banyak menggunakan operator ini dalam berbagai contoh pada tutorial sebelumnya. Pada saat menggunakan operator "=", PHP meng-copy nilai (atau value), dari sisi kanan operator ke sisi kiri.

Operator Assignment by Value (dan juga operator assigment lainnya) memiliki arah proses kanan (dapat dilihat dalam tabel urutan proses pada Tutorial PHP: Pengertian Operand, Operator dan Urutan Operator dalam PHP) sehingga proses pemberian nilai kepada sebuah variabel dimulai dari kanan, seperti contoh berikut:

<?php
$a = 20;
$b = 15;
$c = 5;

echo "\$a = $a, \$b = $b, \$c = $c";
echo "<br />";
// hasil proses: $a = 20, $b = 15, $c = 5

$a = $b = $c+5;
echo "\$a = $a, \$b = $b, \$c = $c";
// hasil proses: $a = 10, $b = 10, $c = 5
?>

Pada contoh kode PHP diatas, saya mendefenisikan 3 variabel: $a, $b, dan $c dengan operator assigment by value. Perhatikan pada baris terakhir, dimana saya menuliskan kode $a = $b = $c+5, yang urutan pemrosesannya di mulai dari kanan ke kiri, sehingga yang diproses oleh PHP menjadi: $a = ($b = ($c+5)).

Pengertian Operator Assigment Array

Operator Assigment array adalah operator assigment untuk menginput nilai kedalam array. Operator ini menggunakan tanda panah (=>). Kita telah membahas cara pembuatan, dan penggunaan operator ini pada tutorial Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP.

Pengertian Assigment dengan Referensi (Assignment by Reference)

Assigment dengan referensi atau dalam istilah programmingnya: Assignment by Reference, adalah operator assigment khusus yang digunakan untuk men-copy nilai referensi dari sebuah variabel.

Pengalaman saya, assigment dengan referensi ini akan jarang digunakan, tetapi tetap penting untuk diketahui bahwa PHP menyediakan fitur ini.

Perhatikan contoh kode PHP berikut ini:

<?php
$a = 20;
$b = $a;

echo "\$a = $a, \$b = $b";
echo "<br />";
// hasil proses: $a = 20, $b = 20

$a = $a + 5;
echo "\$a = $a, \$b = $b";
echo "<br />";
// hasil proses: $a = 25, $b = 20

$b = $b + 10;
echo "\$a = $a, \$b = $b";
// hasil proses: $a = 25, $b = 30
?>

Dalam kode program diatas, saya membuat 2 buah variabel, yaitu $a dan $b. Variabel $a saya input dengan nilai 20, sedangkan variabel $b men-copy nilai dari variabel $a. Selanjutnya saya tampilkan kedua variabel tersebut menggunakan perintah echo.

Pada baris ke-9 saya menambahkan nilai variabel $a dengan 5, lalu menampilkan hasil kedua variabel tersebut. Selanjutnya pada baris ke-14 saya menambahkan $b dengan 10, lalu menampilkan hasilnya

Kata kunci disini adalah, variabel $b hanya men-copy nilai yang ada pada variabel $a, sehingga kedua variabel memiki nilai sendiri-sendiri dan terpisah, seperti yang terlihat dari hasil echo.

Bagaimana jika yang saya inginkan adalah: karena variabel $a=$b, maka ketika saya merubah nilai salah satu variabel, nilai pada variabel yang lain juga ikut berubah. Fitur inilah yang bisa didapatkan dengan Assignment by Reference.

Assignment by Reference dalam PHP menggunakan operator "= &".

Perhatikan contoh kode PHP berikut yang sama persis dengan contoh sebelumnya, namun saya mengganti baris $b = $a, menjadi $b = &$a:

<?php
$a = 20;
$b = &$a;

echo "\$a = $a, \$b = $b";
echo "<br />";
// hasil proses: $a = 20, $b = 20

$a = $a + 5;
echo "\$a = $a, \$b = $b";
echo "<br />";
// hasil proses: $a = 25, $b = 25

$b = $b + 10;
echo "\$a = $a, \$b = $b";
// hasil proses: $a = 35, $b = 35
?>

Seperti yang dapat dilihat, bahwa sekarang kedua variabel ($a dan $b), seolah-olah saling terikat, sehingga ketika sebuah variabel diubah nilainya, variabel yang lain juga ikut berubah.


Perbedaan Assigment By Value, dengan Assigment By Reference

Agar lebih jelas, berikut adalah Perbedaan Proses Assigment By Value, dengan Assigment By Reference

Didalam bahasa pemograman (dan juga PHP), sebuah nilai dari variabel di simpan pada sebuah alamat  tertentu di memory komputer. Alamat memory inilah yang dimaksud dengan referensi.

Misalkan variabel $a memiliki nilai 20, dan berada pada lokasi memory 1013, ketika saya membuat kode program $b=$a, maka nilai (atau value) dari variabel $a di-copy ke dalam variabel $b yang mungkin saja akan berada pada lokasi memory 1014. Sehingga saat ini ada 2 buah lokasi memori untuk menampung nilai dari masing-masing variabel, $a pada lokasi 1013 dengan nilai 20, dan $b pada lokasi 1014 dengan nilai 20 (dicopy dari nilai $a).

Ketika saya menambahkan variabel $a dengan operasi $a = $a + 5, nilai pada lokasi memory 1013 akan menjadi 25, namun karena memiliki lokasi memory yang berbeda, nilai pada variabel $b akan tetap 20. Inilah proses yang terjadi ketika menggunakan Assigment By Value.

Bagaimana dengan Assigment By Reference?

Ketika variabel $a dengan nilai 20 berada di lokasi memory 1013, dan saya menjalankan perintah $b=&$a, maka yang terjadi adalah, alamat lokasi memory (referensi) untuk variabel $b dicopy dari nilai variabel $a, sehingga kedua variabel memiliki 1 alamat memory yang sama, yaitu 1013.

Karena alamat untuk variabel $a dan $b sama, maka ketika salah satu variabel mengubah nilai di alamat 1013, maka nilai tersebut akan berubah. Ketika saya menambahkan nilai variabel $a dengan operasi $a = $a + 5, nilai pada lokasi memory 1013 akan menjadi 25. Dan ketika saya tampilkan nilai dari variabel $b, maka PHP akan mencari nilai di lokasi memori 1013, dan menampilkan hasilnya, yakni 25. Kedua variabel $a dan $b terikat dengan 1 lokasi memory yang sama.


Dalam tutorial ini kita telah mempelajari tentang pengertian dan jenis operator assigment, serta perbedaan antara assigment by value dengan assigment by references. Konsep ini bersifat universal untuk berbagai bahasa pemograman (tidak hanya PHP).

17 Comments

  1. Agus
    15 May 15
    • Andre
      15 May 15
      • Rasid Azis
        30 Dec 16
  2. Afif
    14 Jul 15
    • Andre
      14 Jul 15
  3. Habibie
    26 Jun 16
    • Andre
      27 Jun 16
      • Willy
        17 Jan 17
        • Andre
          18 Jan 17
  4. soleh
    31 Oct 16
  5. Rianda
    23 Jan 17
  6. Ahmad
    05 Feb 19
    • Andre
      05 Feb 19

Add Comment