Tuesday, March 9, 2010

Passing By Value vs Passing By Reference

Pass by value, variable yang diberikan oleh parameter hanya akan diolah didalam fungsi, variable yang berada diluar fungsi akan tetap. Dengan kata lain variable yang dipakai oleh suatu fungsi tidak akan mempengaruhi variable yang ada diluar.
misal pada script dibawah ini:
<?PHP
function pass($value, $tambah = 1)
{
$value = $value +$tambah;
}
$value = 10;
pass ($value);
echo $value;
?>
//print out
10


Script diatas akan menghasilkan $value = 10 bukan $value = 11 mengapa, hal ini disebabkan karena peraturan scope variable. Kode $value = 10 akan membuat sebuah variable bernama value dan bernilai 10, kemudian pada baris pass ($value); fungsi pass dipanggil. Selanjutnya $value = 10 diproses, $value = $value +$tambah;, dengan begitu nilai dari $value = 11, sesuai dengan peraturan scope varibel, $value = 11 hanya akan sampai pada baris terakhir pada fungsi, nilai yang telah diolah tidak akan dapat dipakai di luar dan bersifat bersifat local variable

Pass by reference, jika pada pass by value, nilai hasil olahan tidak dapat digunakan diluar fungsi, maka pass by reference sebaliknya, hasil olahan yang telah diproses di dalam fungsi dapat digunakan di luar fungsi, dengan kata lain value yang di luar fungsi akan turut berubah seiring perubahan yang terjadi pada variable didalam fungsi.

<?PHP
Function passref(&$value, $tambah=1)
{
$value = $value + $tambah;
}
$x = 10;
Echo “nilai sebelum fungsi ”. $x.”<br>”;
Passref($x);
Echo “nilai sesudah fungsi ”. $x.”<br>”;
?>
//print out
nilai sebelum fungsi 10
nilai sesudah fungsi 1

No comments:

Post a Comment