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()函数调试变量类型。