PHP 变量:存储数据的容器

小飞兽 PHP 18 次阅读 2026-07-16

什么是变量

变量是存储数据的容器。PHP 是弱类型语言,变量类型由值自动决定,无需提前声明类型。

声明变量

<?php\n$name = "张三";     // 字符串\n$age = 25;          // 整数\n$price = 99.9;      // 浮点数\n$is_active = true;  // 布尔值\n\n// 输出\necho $name;      // 张三\necho $age;       // 25\necho $price;     // 99.9\necho $is_active; // 1(true 显示为 1)\n?>

变量命名规则

    • $ 符号开头
    • 变量名只能包含字母、数字、下划线 A-Za-z0-9_
    • 不能以数字开头
    • 区分大小写
    <?php\n$name  = "正确";     // ✓\n$name2 = "正确";     // ✓\n$_name = "正确";     // ✓\n$2name = "错误";     // ✗ 不能以数字开头\n$name-a = "错误";    // ✗ 不能有连字符\n?>

    数据类型

    八种数据类型

    <?php\n// 4 种标量类型\n$int    = 42;              // integer(整数)\n$float  = 3.14;            // float/double(浮点数)\n$string = "你好";          // string(字符串)\n$bool   = true;            // boolean(布尔值)\n\n// 4 种复合类型\n$arr    = [1, 2, 3];       // array(数组)\n$obj    = new stdClass();  // object(对象)\n$nul    = null;            // null\n// resource(资源,如数据库连接)\n?>

    获取变量类型

    <?php\n$x = 42;\necho gettype($x);   // integer\n\n$x = "hello";\necho gettype($x);   // string\n\n// 详细类型信息\nvar_dump($x);       // string(5) "hello"\n?>

    类型转换

    <?php\n// 自动转换\n$sum = "5" + 2;   // 字符串 "5" 自动转为整数 5,结果 7\n\n// 强制转换\n$num = (int)"42";     // 42\n$num = (float)"3.14"; // 3.14\n$num = (string)42;    // "42"\n$num = (bool)1;       // true\n$num = (array)"hello"; // ["hello"]\n\n// intval / floatval / strval\n$n = intval("123");    // 123\n$f = floatval("3.14"); // 3.14\n$s = strval(42);       // "42"\n?>

    可变变量

    可变变量使用一个变量的值作为另一个变量的名称。

    <?php\n$name = "张三";\n$$name = "住在绍兴";   // 创建一个名为 $张三 的变量\n\necho $张三;    // 住在绍兴\necho $$name;  // 住在绍兴($$name = $张三)\n?>

    引用赋值 vs 值赋值

    值赋值(默认)

    <?php\n$a = 10;\n$b = $a;    // 值复制\n$a = 20;\n\necho $a;    // 20\necho $b;    // 10(不受影响)\n?>

    引用赋值(用 &)

    <?php\n$a = 10;\n$b = &$a;   // 引用赋值,$b 指向 $a 的内存\n$a = 20;\n\necho $a;    // 20\necho $b;    // 20($a 变,$b 也变)\n\n$b = 30;    // 修改 $b 也影响 $a\necho $a;    // 30\n?>

    引用赋值的实用场景

    <?php\n// 函数参数用引用传递,修改外部变量\nfunction addOne(&$num) {\n    $num++;\n}\n\n$count = 0;\naddOne($count);\naddOne($count);\naddOne($count);\necho $count;  // 3\n?>

    变量作用域

    局部变量

    <?php\nfunction test() {\n    $local_var = "局部变量";  // 只在函数内有效\n    echo $local_var;\n}\ntest();         // 输出:局部变量\necho $local_var; // 报错:未定义\n?>

    全局变量

    <?php\n$global_var = "全局变量";\n\nfunction test() {\n    global $global_var;  // 在函数内访问全局变量\n    echo $global_var;\n}\ntest();\n\n// 通过 $GLOBALS 超全局访问\necho $GLOBALS['global_var'];\n?>

    静态变量

    <?php\nfunction counter() {\n    static $count = 0;   // 静态变量,函数结束后不销毁\n    $count++;\n    echo $count . "\\n";\n}\n\ncounter();  // 1\ncounter();  // 2\ncounter();  // 3\n?>

    empty() / isset() / unset()

    <?php\n$var = "";\n\nempty($var);    // true(空字符串、0、null、false 都返回 true)\nisset($var);    // true(已设置且不为 null)\nunset($var);\nisset($var);    // false(已销毁)\n\n$var2;\nisset($var2);   // false(从未声明)\nempty($var2);   // true\n?>

    总结

    • 变量以 $ 开头,弱类型自动推断
    • &$var 是引用赋值,两变量指向同一内存
    • static 变量在函数调用间保持值
  • global 关键字在函数内访问全局变量
  • empty() 判断空值,isset() 判断已设置