PHP 变量
PHP 中的变量用一个美元符号 $ 后面跟变量名来表示,变量名区分大小写。
基础
一个有效的变量名:由字母或者下划线开头,后面跟上任意数量的字母、数字、或者下划线。
<?php $var = 'Bob'; $Var = 'Joe'; echo "$var, $Var"; // 输出 "Bob, Joe" $4site = 'not yet'; // 非法变量名;以数字开头 $_4site = 'not yet'; // 合法变量名;以下划线开头 $i站点is = 'mansikka'; // 合法变量名;可以用中文
预定义变量
PHP 提供了大量的预定义变量,变量将所有的外部变量表示成内建环境变量。
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTP Request 变量
$_SESSION — Session 变量
$_ENV — 环境变量
$_COOKIE — HTTP Cookies
$php_errormsg — 前一个错误信息
$http_response_header — HTTP 响应头
$argc — 传递给脚本的参数数目
$argv — 传递给脚本的参数数组
作用域
变量的作用域即它的有效范围。
局部变量:在 PHP 函数内部声明的变量是局部变量。
全局变量:在所有函数外部定义的变量,拥有全局作用域,称为全局变量。
<?php $x = 1; // 全局作用域 function myTest() { $y = 2; // 局部作用域 echo $x; echo $y; } myTest(); // 输出2,因为在myTest()函数内没有定义$x。
函数内访问全局变量,有两种方法:global 关键字和 PHP 预定义的 $GLOBALS 数组。
<?php // 使用 global 关键字 $x = 1; $y = 2; function myTest() { global $x, $y; echo $x + $y; } myTest(); // 输出3
<?php // 使用 PHP 预定义的 $GLOBALS 数组 $x = 1; $y = 2; function myTest() { echo $GLOBALS['x'] + $GLOBALS['y']; } myTest(); // 输出3
Static作用域:Static静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
<?php function myTest() { static $a = 1; echo $a; $a++; } myTest(); // 输出1 myTest(); // 输出2
可变变量
一个变量的变量名可以动态的设置和使用。
<?php $a = 'hello'; $$a = 'world'; echo "$a ${$a}"; // ${$a}等于$hello,输出hello world echo "$a $hello"; // 和上一条语句等价,输出hello world
判断变量类型
通常情况下, PHP 会判断变量类型并在需要时进行转换。
PHP 包括几个函数可以判断变量的类型,例如:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()。
可以使用var_dump()函数调试变量类型。