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.