跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
PHP数据类型
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= PHP数据类型 = PHP是一种弱类型(动态类型)语言,这意味着变量的数据类型不需要显式声明,而是在运行时根据上下文自动确定。理解PHP的数据类型对于编写高效、可预测的代码至关重要。 == 标量类型(Scalar Types) == 标量类型是最基本的数据类型,只能存储单个值。 === 布尔型(Boolean) === 布尔型表示逻辑值,只有两个可能的值:<code>true</code>或<code>false</code>。 <syntaxhighlight lang="php"> $isActive = true; $isCompleted = false; var_dump($isActive); // 输出: bool(true) var_dump($isCompleted); // 输出: bool(false) </syntaxhighlight> === 整型(Integer) === 整型是没有小数部分的数字,可以是正数或负数。 <syntaxhighlight lang="php"> $positive = 42; $negative = -100; var_dump($positive); // 输出: int(42) var_dump($negative); // 输出: int(-100) </syntaxhighlight> === 浮点型(Float/Double) === 浮点型(也称为双精度浮点数)可以包含小数部分。 <syntaxhighlight lang="php"> $price = 19.99; $scientific = 1.2e3; // 1.2 × 10³ = 1200 var_dump($price); // 输出: float(19.99) var_dump($scientific); // 输出: float(1200) </syntaxhighlight> === 字符串(String) === 字符串是字符序列,可以用单引号或双引号定义。 <syntaxhighlight lang="php"> $name = 'John'; $greeting = "Hello, $name!"; var_dump($name); // 输出: string(4) "John" var_dump($greeting); // 输出: string(12) "Hello, John!" </syntaxhighlight> == 复合类型(Compound Types) == 复合类型可以包含多个值。 === 数组(Array) === 数组是有序映射,可以包含多个值,每个值都有一个键。 <syntaxhighlight lang="php"> $fruits = ['apple', 'banana', 'cherry']; $person = [ 'name' => 'Alice', 'age' => 25, 'isStudent' => true ]; var_dump($fruits); /* 输出: array(3) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(6) "cherry" } */ </syntaxhighlight> === 对象(Object) === 对象是类的实例,可以包含属性和方法。 <syntaxhighlight lang="php"> class Person { public $name; public $age; public function greet() { return "Hello, my name is $this->name!"; } } $person = new Person(); $person->name = 'Bob'; $person->age = 30; var_dump($person); /* 输出: object(Person)#1 (2) { ["name"]=> string(3) "Bob" ["age"]=> int(30) } */ </syntaxhighlight> == 特殊类型 == 这些类型有特殊用途。 === NULL === NULL表示变量没有值。 <syntaxhighlight lang="php"> $emptyVar = null; var_dump($emptyVar); // 输出: NULL </syntaxhighlight> === 资源(Resource) === 资源是特殊变量,保存对外部资源的引用(如数据库连接、文件句柄等)。 <syntaxhighlight lang="php"> $file = fopen('example.txt', 'r'); var_dump($file); // 输出: resource(3) of type (stream) fclose($file); </syntaxhighlight> == 类型转换 == PHP会自动进行类型转换,也可以显式转换。 === 自动类型转换 === PHP会根据上下文自动转换类型。 <syntaxhighlight lang="php"> $sum = "5" + 10; // 字符串"5"被转换为整数5 var_dump($sum); // 输出: int(15) </syntaxhighlight> === 显式类型转换 === 可以使用<code>(type)</code>语法进行强制类型转换。 <syntaxhighlight lang="php"> $number = "123"; $intNumber = (int)$number; $floatNumber = (float)$number; var_dump($intNumber); // 输出: int(123) var_dump($floatNumber); // 输出: float(123) </syntaxhighlight> == 类型检测函数 == PHP提供了一系列函数来检测变量的类型。 <syntaxhighlight lang="php"> $value = "Hello"; var_dump(is_string($value)); // 输出: bool(true) var_dump(is_int($value)); // 输出: bool(false) </syntaxhighlight> == 实际应用案例 == 考虑一个用户注册表单处理场景: <syntaxhighlight lang="php"> // 从表单接收数据 $username = $_POST['username']; // 字符串 $age = (int)$_POST['age']; // 转换为整数 $isSubscribed = isset($_POST['subscribe']); // 布尔值 // 验证数据 if (empty($username)) { echo "用户名不能为空"; } elseif ($age < 18) { echo "必须年满18岁"; } else { // 处理注册逻辑 $userData = [ 'username' => $username, 'age' => $age, 'isSubscribed' => $isSubscribed, 'registrationDate' => date('Y-m-d H:i:s') ]; // 存储到数据库... } </syntaxhighlight> == 类型关系图 == <mermaid> graph TD A[PHP数据类型] --> B[标量类型] A --> C[复合类型] A --> D[特殊类型] B --> E[布尔型] B --> F[整型] B --> G[浮点型] B --> H[字符串] C --> I[数组] C --> J[对象] D --> K[NULL] D --> L[资源] </mermaid> == 数学表示 == 在PHP中,类型转换可以用数学方式表示: <math> \text{目标类型}(变量) \Rightarrow \text{转换后的值} </math> 例如: <math> \text{int}("123") = 123 </math> == 总结 == PHP的数据类型系统灵活而强大,理解这些类型及其行为对于编写健壮的PHP应用程序至关重要。记住: * PHP是弱类型语言,但支持显式类型转换 * 使用适当的类型检测函数来验证变量类型 * 理解自动类型转换的规则可以避免意外的行为 * 在关键业务逻辑中,显式类型转换可以提高代码的可预测性 [[Category:编程语言]] [[Category:PHP]] [[Category:PHP基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)