PHP 数据类型:字符串、整数、浮点数、布尔值、数组完整指南

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

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() 判断是否设置