- PHP 菜鸟教程
- PHP - 教程
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 功能
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - echo 语句和 print 语句
- PHP - var_dump() 函数
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP – 数据类型
- PHP - 类型转换
- PHP - 类型戏法
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件和I/O
- PHP – 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符类型
- PHP - 算术运算符示例
- PHP - 比较运算符示例
- PHP - 逻辑运算符示例
- PHP - 赋值运算符示例
- PHP – 字符串运算符
- PHP – 数组运算符
- PHP – 条件运算符示例
- PHP - Spread 运算符
- PHP - Null 合并运算符
- PHP - Spaceship 运算符
- PHP 控制语句
- PHP – 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP – 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - do...While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 数组
- PHP - 数组
- PHP - 索引数组
- PHP - 关联数组
- PHP - 多维数组
- PHP - 数组函数
- PHP - 常量数组
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值调用
- PHP - 按引用调用
- PHP - 默认参数
- PHP - 命名参数
- PHP - 变量参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量范围
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头( Arrow )函数
- PHP - 变量处理函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS 变量
- PHP - $_SERVER 变量
- PHP - $_REQUEST 变量
- PHP - $_POST 变量
- PHP - $_GET 变量
- PHP - $_FILES 变量
- PHP - $_ENV 变量
- PHP - $_COOKIE 变量
- PHP - $_SESSION 变量
- PHP 文件处理
- PHP - 文件处理
PHP - 类型戏法
PHP 被称为动态类型语言。PHP 中变量的类型是动态变化的。此功能在 PHP 中称为 “type juggling”。
在 C、C++ 和 Java 中,您需要先声明变量及其类型,然后才能在后续代码中使用它。该变量可以采用仅与声明的类型匹配的值。
在 PHP 中,既不需要也不支持变量的显式类型声明。因此,PHP 变量的类型由分配给它的值决定,而不是相反。此外,当为变量分配不同类型的值时,其类型也会发生变化。
示例 1
请看下面 PHP 中的变量赋值。
<?php
$var = "Hello";
echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;
$var = 10;
echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;
$var = true;
echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;
$var = [1,2,3,4];
echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;
?>
它将产生以下输出 -
The variable $var is of string type
The variable $var is of integer type
The variable $var is of boolean type
The variable $var is of array type
The variable $var is of integer type
The variable $var is of boolean type
The variable $var is of array type
您可以根据分配给 $var 的值动态查看 “” 更改的类型。PHP 的这个特性称为 “type juggling”。
示例 2
在计算 expression 期间也会发生类型杂耍。在此示例中,包含 digits 的字符串变量会自动转换为整数,以便计算加法表达式。
<?php
$var1=100;
$var2="100";
$var3=$var1+$var2;
var_dump($var3);
?>
这是它的输出 -
int(200)
示例 3
如果字符串以数字开头,则在执行计算时将忽略尾随的非数字字符(如果有)。但是,PHP 解析器会发出如下所示的通知 -
<?php
$var1=100;
$var2="100 days";
$var3=$var1+$var2;
var_dump($var3);
?>
您将获得以下输出 -
int(200)
PHP Warning: A non-numeric value encountered in /home/cg/root/53040/main.php on line 4
PHP Warning: A non-numeric value encountered in /home/cg/root/53040/main.php on line 4
类型转换 vs 类型戏法
请注意,PHP 中的 “type casting” 与 “type juggling” 略有不同。
- 在类型杂耍中,PHP 会在必要时自动将类型从一种类型转换为另一种类型。例如,如果将整数值分配给变量,则该变量将变为整数。
- 另一方面,当用户显式定义他们想要强制转换的数据类型时,就会发生类型转换。
类型转换强制将变量用作特定类型。以下脚本显示了不同类型的强制转换运算符的示例 -
<?php
$var1=100;
$var2=(boolean)$var1;
$var3=(string)$var1;
$var4=(array)$var1;
$var5=(object)$var1;
var_dump($var2, $var3, $var4, $var5);
?>
它将产生以下输出 -
bool(true)
string(3) "100"
array(1) {
[0]=>
int(100)
}
object(stdClass)#1 (1) {
["scalar"]=>
int(100)
}
string(3) "100"
array(1) {
[0]=>
int(100)
}
object(stdClass)#1 (1) {
["scalar"]=>
int(100)
}
例
将变量转换为字符串也可以通过用双引号括起来 string 来完成 -
<?php
$var1=100.50;
$var2=(string)$var1;
$var3="$var1";
var_dump($var2, $var3);
?>
在这里,您将获得以下输出 -
string(5) "100.5"
string(5) "100.5"
string(5) "100.5"