PHP 数据类型:字符串、整数、浮点数、布尔值、数组完整指南
PHP 数据类型概述
PHP 有 8 种数据类型:4 种标量类型(string、int、float、bool)、2 种复合类型(array、object)、2 种特殊类型(null、resource)。
一、字符串(String)
字符串声明
<?php\n$str1 = "双引号字符串"; // 双引号\n$str2 = '单引号字符串'; // 单引号\n\n// 双引号解析变量,单引号不解析\necho "Hello $name"; // Hello 张三\necho 'Hello $name'; // Hello $name\n\n// 复杂变量用花括号\necho "Hello {$user->name}"; // 正确\necho "Hello $user->name"; // 解析为 $user->name 整体变量\n?>
字符串拼接
<?php\n$first = "Hello";\n$second = "World";\n\n// 拼接\necho $first . " " . $second; // Hello World\n\n// 拼接赋值\n$first .= " World";\necho $first; // Hello World\n?>
常用字符串函数
<?php\n$str = " Hello World ";\n\nstrlen($str); // 13(长度)\ntrim($str); // "Hello World"(去首尾空格)\nltrim($str); // 去左空格\nrtrim($str); // 去右空格\n\nstrtolower($str); // 转小写\nstrtoupper($str); // 转大写\nucfirst($str); // 首字母大写\nucwords($str); // 每个单词首字母大写\n\nsubstr($str, 0, 5); // " Hell"(截取)\nstr_replace("World", "PHP", $str); // 替换\nstrpos($str, "World"); // 查找位置(false 表示不存在)\n\n// 格式化输出\nsprintf("%.2f", 3.14159); // "3.14"\nprintf("%.2f", 3.14159); // 直接输出 3.14\n?>
二、整数(Integer)
<?php\n$a = 42; // 十进制\n$b = 0x1A; // 十六进制(26)\n$c = 052; // 八进制(42)\n$d = 0b101010; // 二进制(42)\n$e = 4_2_0; // PHP 7.4+ 可用下划线分隔(420)\n\n// 整数溢出:自动转为 float\n$big = 999999999999999999999999999999999999999;\nvar_dump($big); // float(1.0E+39)\n\n// 进制转换\ndecbin(42); // "101010"(十进制转二进制)\ndecoct(42); // "52"(十进制转八进制)\ndechex(42); // "2a"(十进制转十六进制)\nbindec("101010"); // 42(二进制转十进制)\n?>
三、浮点数(Float)
<?php\n$a = 3.14;\n$b = 1.234e5; // 科学计数法:123400\n$c = 3.14e-2; // 0.0314\n\n// 浮点数比较(注意精度问题)\n$a = 0.1 + 0.2;\n$b = 0.3;\nvar_dump($a == $b); // false!\n\n// 正确比较方式\nvar_dump(abs($a - $b) < 0.0001); // true\n\n// 四舍五入\nround(3.14159, 2); // 3.14\nround(3.14159, 4); // 3.1416\nceil(3.14); // 4(向上取整)\nfloor(3.14); // 3(向下取整)\n?>
四、布尔值(Boolean)
<?php\n$is_active = true;\n$is_empty = false;\n\n// 以下值在布尔判断中视为 false:\n// false, 0, 0.0, "", "0", [], null, 未定义的变量\nif ($is_active) echo "活跃";\nif (!$is_empty) echo "有内容";\n\n// 三元运算符\n$status = $is_active ? "在线" : "离线";\necho $status; // 在线\n?>
五、数组(Array)
创建数组
<?php\n// PHP 7.1+ 短数组语法\n$arr1 = [1, 2, 3, 4, 5];\n\n// 关联数组\n$user = [\n 'name' => '张三',\n 'age' => 25,\n 'city' => '绍兴',\n];\n\n// 添加元素\n$arr1[] = 6; // 追加到末尾\n$arr1[10] = 11; // 指定键(跳过 7,8,9)\n$user['email'] = 'zhang@example.com';\n\n// 多维数组\n$matrix = [\n [1, 2, 3],\n [4, 5, 6],\n [7, 8, 9],\n];\necho $matrix[1][2]; // 6\n?>
遍历数组
<?php\n$colors = ['红', '绿', '蓝'];\n\n// 遍历值\nforeach ($colors as $color) {\n echo $color . "\\n";\n}\n\n// 遍历键和值\nforeach ($colors as $index => $color) {\n echo "{$index}: {$color}\\n";\n}\n\n// 遍历关联数组\n$user = ['name' => '张三', 'age' => 25];\nforeach ($user as $key => $value) {\n echo "{$key}: {$value}\\n";\n}\n?>
常用数组函数
<?php\n$nums = [3, 1, 4, 1, 5, 9, 2, 6];\n\ncount($nums); // 8(元素个数)\nsort($nums); // 升序排列(改变原数组)\nrsort($nums); // 降序排列\narray_sum($nums); // 求和\narray_product($nums); // 求积\nin_array(5, $nums); // true(是否存在)\narray_search(5, $nums); // 4(查找值的键)\narray_unique($nums); // 去重\narray_reverse($nums); // 反转\narray_slice($nums, 0, 3); // 截取前3个\narray_merge($a, $b); // 合并数组\n?>
六、NULL 空值
<?php\n$var = null;\n\n// 判断是否为 null\nis_null($var); // true\nempty($var); // true(empty 把 null 视为空)\nisset($var); // false(null 视为未设置)\n\n// 场景:变量初始化、函数无返回值\nfunction test() {\n // 无 return 时返回 null\n}\n$result = test();\nis_null($result); // true\n?>
七、类型检测
<?php\n$x = 42;\n\nis_int($x); // true\nis_integer($x); // true(别名)\nis_string($x); // false\nis_array($x); // false\nis_bool($x); // false\nis_float($x); // false\nis_null($x); // false\nis_numeric($x); // true(数字或数字字符串)\n\n// gettype() 返回类型名字符串\ngettype($x); // "integer"\n?>
总结
- 字符串用
"..."(解析变量)或'...'(不解析) - 整数支持十进制、十六进制(0x)、八进制(0)、二进制(0b)
- 浮点数比较要用
abs($a - $b) < epsilon,不能用== - 数组是 PHP 最强大的数据结构,支持数字索引和关联键
- 用
empty()判断空值,用isset()判断是否设置