PHP 变量:存储数据的容器
什么是变量
变量是存储数据的容器。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() 判断已设置