PHP学习笔记之变量
最近在整理 PHP 笔记, 免得每天上下班都要带厚厚的电脑书, 只要记在 Google, 哪里都能查询.
变量
变量命名规则 :
PHP 是弱型别语言, 变量不用事先指定资料型态, 是在执行时才决定型态的, PHP 解析器会依指定之内容来设定这变量的资料型态. PHP 同时也是动态语言, 变量可以随时重新指定为另一种资料型态之值. 但唯一的例外是, $this 是一个特别变量, 用来表示 PHP 物件本身, 不可重新指定其值. 注意, 要避免在内部范围 (例如循环或函数内) 使用与外部范围同样的名称, 以免存取错误.
变量必须以 $ 开头, 后接任何数目的英数字或底线组合, 名称中不能含有 $, 故 $va$r 为不合法.
$ 后第一个字元不可以是数字, 必须是英文字母或底线 _, 第二字元以后才可以用数字, 最好只用英数字与底线, 不可用 $, @ 等特殊符号. 故 $var@1 不合法, 但 ${1}, ${"变量"} 是合法变量名称.
变量有分大小写, 故 $var 与 $Var 乃不同变量.
不可以使用 PHP 保留字, 内建变量, 内建函数, 或内建物件名称当变量名称.
参照指派 (assign by reference) 取得变量之内存位址:
所谓参照指派是用参照运算子 & 于变量 $var 前 (即 &$var), 这样就会取得该变量之储存位址, 对此变量赋值同时也会改变 $var 之值, 因为它们都指向相同位址. 例如 :
$var1="Peter";
$var2=&$var1; //使用参照运算子 & 取得 $var1 之位址, 并将此位址指派给 $var2 (使得 $var1 与 $var2 指向相同位址)
$var2="John"; //赋值 $var2 ($var1 也会同步被改)
echo $var1; //输出 "John"
echo $var2; //输出 "John"
可变变量 (variable variables) :
PHP 的可变变量可以动态地设定变量名称, 它是以另外一个变量的值来作为它的变量名称. 它是在一个字串变量名称 $var 前面再加一个 $, 即 $$var, 表示以 $var 之值作为其名称的一个变量, 例如 :
$x="hello";
$$x="world"; //此指令等同于 $hello="world"
echo "$x $$x"; //输出 hello $hello (双引号的变量解析功能只能用一次)
echo "$x ${$x}"; //输出 hello world
echo "$x ${$x}"; //输出 hello world
变量的有效范围 (scope) :
PHP 的变量依其有效范围可以分成 3 种 :
| 变量种类 | 说明 | 範例 |
| 区域变量 (local variable) | 区域变量是在函数内宣告的变量 (包括函数的参数), 只能在函数内部使用, 在函数外无法存取. 当调用函数时, 区域变量会被建立, 函数执行完毕即被释放, 即区域变量的值不会被保留. | function myFunc() { $a=2; //宣告区域变量 echo "函数内 a=$a"; } myFunc(); //显示 "函数内 a=2" echo "函数外 a=$a"; //显示 "函数外 a=" (无法存取) |
| 全域变量(global variable) | 全域变量是在函数外面宣告的变量, 在整个 PHP 档案中都可以使用, 但是它不像 Javascript 一样自动穿透到函数内部, PHP 全域变量有效範围只限于主程式中, 不会影响到函数内同名的区域变量, 欲在函数内部存取全域变量时必须在变量前面加上 global 关键字. 在函数内存取全域变量的第二个方法是使用 PHP 特别定义的阵列 $GLOBAL["全域变量名"] : $a=2; function myFunc() { echo "函数内 a=".$GLOBAL["a"]; } |
$a=2; //宣告全域变量 function myFunc() { global $a=3; //宣告 $a 为全域变量 echo "函数内 a=$a"; } myFunc(); //显示 "函数内 a=2" echo "函数外 a=$a"; //显示 "函数外 a=2" |
| 静态变量 (static variable) | 静态变量只能在函数内用 static 关键字宣告, 使宣告于函数内之变量在调用结束后, 仍然存在于内存, 不会被释放, 下一次在调用此函数时, 会重新被存取到. 只要函数被调用一次,函数内的静态变量就会一直存在, 但是它与全域变量不同的是, 于函数外部是无法存取得到静态变量的. 注意, 静态变量不能与复合运算子同时使用 : static $msg += 1; //syntax error 应该分开来 : static $msg; $msg += 1; |
function myFunc() { static $msg; //宣告静态变量 $msg += 1; echo $msg; } myFunc(); //显示 1 myFunc(); //显示 2 echo "函数外 msg=$msg"; /显示 "函数外 msg=" |
变量的预设值 :
每一种资料型态都有预设值, 整数与浮点数预设值为 0, 字串预设值为空字串, 布林值的预设值为 FALSE, 阵列预设值为空阵列. 例如 : echo "x=$x"; //输出 x= (变量 $x 之前尚未赋值, 因为用于字串中, 预设值为空字串) echo $y += 10; //输出 10 (变量 $y 之前尚未赋值, 因为用于算式中, 预设值为 0)
检查变量是否为空的函数 : empty($var)
可以使用 empty($var) 函数检查变量是否为空变量. 空变量有六种 : 空字串 "", 0, 字串 "0", NULL, FALSE, 以及空阵列. 对于空变量 empty 会传回 TRUE.
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
