本文目录导读:

在PHP中,强制类型转换(类型转换)可以通过以下几种方式实现:
基本类型转换语法
// 转换为整型 (int) $variable (integer) $variable // 转换为浮点型 (float) $variable (double) $variable (real) $variable // 转换为字符串 (string) $variable // 转换为布尔型 (bool) $variable (boolean) $variable // 转换为数组 (array) $variable // 转换为对象 (object) $variable
实际示例
<?php
// 字符串转整型
$str = "123.45abc";
$int = (int) $str;
echo $int; // 输出: 123
// 字符串转浮点型
$float = (float) $str;
echo $float; // 输出: 123.45
// 数值转布尔型
$num = 0;
$bool = (bool) $num;
var_dump($bool); // bool(false)
// 数值转字符串
$num = 100;
$str = (string) $num;
var_dump($str); // string(3) "100"
// 数组转换
$obj = (array) new stdClass();
var_dump($obj); // array(0) {}
// 对象转换
$arr = ['name' => 'John', 'age' => 25];
$obj = (object) $arr;
echo $obj->name; // 输出: John
?>
特殊类型转换函数
<?php
// intval() - 获取整数值
$int = intval("42.5abc"); // 42
// floatval() - 获取浮点数值
$float = floatval("42.5abc"); // 42.5
// strval() - 获取字符串值
$str = strval(123); // "123"
// boolval() - 获取布尔值 (PHP 5.5+)
$bool = boolval("false"); // true (非空字符串为true)
// settype() - 设置变量类型
$var = "100";
settype($var, "integer");
echo $var; // 100
?>
类型转换规则表
<?php
$tests = [
"转换从/到" => ["整型", "浮点型", "布尔型", "字符串"],
"整型(0)" => [0, 0.0, false, "0"],
"整型(1)" => [1, 1.0, true, "1"],
"字符串空" => [0, 0.0, false, ""],
"字符串'0'" => [0, 0.0, false, "0"],
"字符串'abc'" => [0, 0.0, true, "abc"],
"null" => [0, 0.0, false, ""],
"true" => [1, 1.0, true, "1"],
"false" => [0, 0.0, false, ""]
];
?>
注意事项
<?php
// 1. 浮点数精度问题
$result = (int) ( (0.1 + 0.7) * 10 );
echo $result; // 可能输出7,而不是8
// 2. 布尔转换特定值被视为false
$falsy_values = [0, 0.0, "", "0", null, false, []];
foreach ($falsy_values as $val) {
var_dump((bool) $val); // 全部为false
}
// 3. 对象转数组
class User {
public $name = "John";
protected $age = 25;
private $email = "john@example.com";
}
$user = new User();
$arr = (array) $user;
// 属性键名会包含类名信息
var_dump($arr);
?>
推荐实践
<?php
// 输入验证和类型转换结合
function sanitizeInput($input) {
// 明确指定期望的类型
$id = (int) $input['id'];
$price = (float) $input['price'];
$name = (string) $input['name'];
$active = (bool) $input['active'];
return [
'id' => $id,
'price' => $price,
'name' => $name,
'active' => $active
];
}
// 使用严格类型声明
declare(strict_types=1);
function calculate(int $a, int $b): int {
return $a + $b;
}
// 强制转换为期望的类型
$result = calculate((int) "5", (int) "10");
echo $result; // 15
?>
- 使用
(类型)语法进行快速类型转换 - 使用类型转换函数(intval(), floatval()等)进行更可控的转换
- 注意类型转换的特殊规则(如空字符串、null、false等)
- 结合输入验证和错误处理使用类型转换
- 在需要严格类型检查的项目中使用
declare(strict_types=1)
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播