Kapan Kita Harus Menggunakan Tanda “&”
Saya harus me-looping penjelasan saya kepada beberapa teman dan adik angkatan saya ketika mereka menanyakan tentang penggunaan tanda “&” pada syntax PHP. Mereka sering menemukan tanda ini di beberapa source code CMS yang sedang mereka pelajari namun belum tau efektivitas tanda ini dan belum tahu kapan harus menggunakannya.
Sebenarnya tanda “&” itu adalah salah satu fungsi dasar di PHP yang harus dipahami. Tanda ini sering digunakan dalam melempar argumen ke fungsi. Contoh:
<? function setData($test){ // ... some code ... } setData(&$halo); // penggunaan tanda “&” ?>
Arti syntax sederhana diatas adalah variable $halo dijadikan argumen yang bersifat “Pass by Reference” sehingga setelah variable $halo – lah yang akan di proses di dalam fungsi setData, bukan hanya isinya saja. Jika kita melempar argumen tanpa tanda “&” maka sifat argumen tersebut adalah “Pass by Value”, yang hanya memproses isi variable tersebut. Saya akan berikan contoh selanjutnya:
<? // fungsi sederhana mem-format tanggal function setDate($mydate){ $exp = explode('-',$mydate); $mydate = $exp[2].'-'.$exp[1].'-'.$exp[0]; return $mydate; } $basicDate = '2007-07-02'; echo 'Tanggal Sebelum Diformat: '.$basicDate; echo '<br>Tanggal Diformat Langung (Pass by Value): '.setDate($basicDate); echo '<br>Isi Variable Setelah "Pass by Value": '.$basicDate; echo ' --> Isi variable masih sama'; echo '<hr>Pass by Reference:'.setDate(&$basicDate); echo '<br>Isi Variable Setelah "Pass by Reference": '.$basicDate; echo ' --> Isi variable sudah berubah (permanen)'; ?>
Bila anda menjalankan perintah diatas maka anda akan menemukan tampilan seperti berikut:
Tanggal Sebelum Diformat: 2007-07-02 Tanggal Diformat Langung (Pass by Value): 02-07-2007 Isi Variable Setelah "Pass by Value": 2007-07-02 --> Isi variable masih sama Pass by Reference:02-07-2007 Isi Variable Setelah "Pass by Reference": 02-07-2007 --> Isi variable sudah berubah (permanen)
Terlihat jelas perbedaan metode “Pass By Value” dan “Pass By Reference” ada pada kondisi variable setelah fungsi di panggil. “Pass By Reference” atau dengan menggunakan tanda “&” akan mengubah isi variable $basicDate secara permanen. Artinya “si variable” ini yang diolah di dalam fungsi, bukan cuma isinya.
Contoh dalam pengambilan data dari database terlihat di source spt ini:
<? function setData($id,$nama,$email){ $query = mysql_query("SELECT * FROM t_users WHERE id = '$id'"); if($query && mysql_num_rows($query) == 0){ $data = mysql_fetch_assoc($query); $nama = $data['nama']; $email = $data['email']; } } $nama = ''; $email = ''; setData(1,&$nama,&$email); echo 'Nama: '.$nama; echo '<br>Email: '.$email; ?>
Perhatikan perintah setData(1,&$nama,&$email) , nilai 1 itu adalah id untuk mengidentifikasi data dari database, argumen ini metodenya adalah “Pass By Value” dan variable $nama dan $email akan menampung data dari field nama dan email dari database. Fungsi ini dapat mempersingkat script anda dalam hal pengambilan data dari database.
Semoga bisa membantu… ^_^


Chandra Jatnika

Penjelasan Anda sangat bermanfaat..Terima kasih..
Saya sangat terbantu mengenai Pass By Value dan Pass By Reference.