【PHP】解析PHP中的變數
阿新 • • 發佈:2018-12-27
php是一門指令碼語言,同時php中的變數型別也是弱語言型別,這和javascript非常相似。筆者在這裡說一說PHP中的變數知識點。
1. 引用型別變數
看下面的案例:
<?php class Ref{ public $val = 100; } function change($v){ $v++; } $Ref = new Ref(); echo $Ref->val."\n";//100 change($Ref->val); echo $Ref->val."\n";//100 ?>
輸出結果為:
100
100
其中符號點(.)表示連線符。
如果把change函式改成如下的形式
function change(&$v){//注意多了&符號 $v++; }
然後輸出的結果就是:
100
101
&在上面已經演示過了,&表示引用操作符,顧名思義,被&操作符修飾的變數,表示傳遞變數的引用。
例如:
<?php $foo = "test"; $bar = &$foo;//以引用傳遞 echo $bar."\n";//test $bar = "hello"; echo $foo."\n";//hello unset($foo);//釋放給定的變數 if( isset($bar) ) //檢測變數是否已設定 echo "bar is set\n"; else echo "bar is not set\n"; if( isset($foo) ) //檢測變數是否已設定 echo "foo is set\n"; else echo "foo is not set\n"; ?>
2.可變變數
php中還提供了可變變數這種語法,一個可變變數獲取了一個普通變數的值作為這個可變變數的變數名。
例如:
<?php class foo { var $bar = 'I am bar.';var $arr = array(name=>'jamy.',age=>12); var $r = 'I am r.'; } $foo = new foo(); $bar = 'bar'; $baz = array('foo', 'bar', 'baz', 'quux'); echo $foo->$bar . "\n"; echo $foo->{$baz[1]} . "\n"; $start = 'b'; $end = 'ar'; echo $foo->{$start . $end} . "\n"; $arr = 'arr'; echo $foo->{$arr[1]} . "\n"; ?>
輸出為:
I am bar.
I am bar.
I am bar.
I am r.