You are here: 首頁 PHP分享特區 關於PHP和Javascript的參數傳遞和參數傳址

飛朵啦學習手札

本網站建議使用Firefox2.0以上,或是使用Goole瀏覽器來瀏覽,並使用1024x768解析度來觀看.

關於PHP和Javascript的參數傳遞和參數傳址

E-mail 列印 PDF

果然在物健導向的底還不夠深,趁這個機會將觀念一掃而空。

PHP部分:
在 PHP ,大部分時候寫 = 代表複製過去的是變數裡面的 value, =& 代表複製過去的是變數(參數傳值)。但是當變數是物件時當 = 的右邊是物件時,複製過去的會是 reference (參數傳址)。如果要複製物件裡面的 value 到一個新的物件,必須用關鍵字 clone,如下:

<?php

$obj2 = clone $obj;

?>

Javascript部分:

在Javascript部分,陣列和物件都是reference (參數傳址) ,而其他變數則是(參數傳值),Javascript複製物件的方法請參考http://www.josephjiang.com/presentation/OOJS/object-oriented-paradigms.html

PS:PHP的陣列是(參數傳值)。


最後這是自己寫的範例執行結果:

 

PHP 部分:

<?php

//參數傳值

$a = 10;

$b = $a;

$b = 15;

echo '<br />v1=' . $a . ' v2=' . $b;

//參數傳值
//陣列

$ar[0] = 10;

$br = $ar;

$br[0] = 15;

echo '<br />v1=' . $ar[0] . ' v2=' . $br[0];


//參數傳址
//物件

class foo {

public $value = 42;

public function getValue() {

return $this->value;

}

}

$ao = new foo;

$bo = $ao;

$bo->value = 15;

echo '<br />v1=' . $ao->value . ' v2=' . $bo->value;

 

?>

 

<br><br>JAVASCRIPT 部分:

<script type="text/javascript">

//參數傳值

var v1=10;

var v2=v1;

v2=15;

document.write("<br />v1="+v1+"  v2="+v2);

//參數傳址
//陣列

var ay1=new Array(10);

var ay2=ay1;

ay2[0]=15;

document.write("<br />v1="+ay1[0]+"  v2="+ay2[0]);

//參數傳址
//物件

var o1={v:1};

var o2=o1;

o2.v=15;

document.write("<br />v1="+o1.v+"  v2="+o2.v);

</script>

 

以下產生的結果為

PHP 部分:
v1=10 v2=15
v1=10 v2=15
v1=15 v2=15

JAVASCRIPT 部分:
v1=10 v2=15
v1=15 v2=15
v1=15 v2=15    

線上產生網址:http://pim0110.com/joomla/download/exp_obj_2012_04_16/obj.php
範例檔案下載:http://pim0110.com/joomla/download/exp_obj_2012_04_16/obj.zip

 

最近更新 ( 週一, 16 四月 2012 15:13 )  
 

新增回應


驗證碼
更新