文章目录
PHP 数据类型
PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。
PHP 支持以下几种数据类型:
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
- Resource(资源类型)
PHP 字符串
一个字符串是一串字符的序列,就像 “Hello world!”。
你可以将任何文本放在单引号和双引号
中:
实例
PHP 整型
整数是一个没有小数
的数字。
整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数
不能包含逗号或空格
- 整数是
没有小数点
的 - 整数可以是
正数或负数
- 整型可以用三种格式来指定:
十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
。
在以下实例中我们将测试不同的数字。
PHP var_dump()
函数返回变量的数据类型和值
:
PHP 浮点型
浮点数是带小数部分
的数字,或是指数形式
。
在以下实例中我们将测试不同的数字。 PHPvar_dump()
函数返回变量的数据类型和值:
PHP 布尔型
布尔型可以是 TRUE 或 FALSE。
$x=true;
$y=false;
布尔型通常用于条件判断
。
PHP 数组
数组可以在一个变量中存储多个值
。
在以下实例中创建了一个数组, 然后使用 PHP var_dump()
函数返回数组的数据类型和值:
PHP 对象
对象数据类型也可以用于存储数据
。
在 PHP 中,对象必须声明
。
首先,你必须使用class
关键字声明类对象
。类是可以包含属性和方法
的结构。
然后我们在类中定义数据类型,然后在实例化的类
中使用数据类型:
<!DOCTYPE html>
<html>
<body>
<?php
class Car
{
var $color;
function __construct($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
// 实例一个对象
$herbie = new Car("white");
// 显示 herbie 属性
echo "\therbie: Properties\n";
print_vars($herbie);
?>
</body>
</html>
输出:
herbie: Properties
color = white
以上实例中PHP关键字this
就是指向当前对象实例的指针
,不指向任何其他对象或类。
PHP NULL 值
NULL 值表示变量没有值
。NULL 是数据类型为 NULL 的值
。
NULL 值指明一个变量是否为空值
。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据:
PHP 资源类型
PHP 资源 resource
是一种特殊变量,保存了到外部资源的一个引用
。
常见资源数据类型
有打开文件、数据库连接、图形画布区域
等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义
。
使用 get_resource_type()
函数可以返回资源(resource)类型
:
get_resource_type(resource $handle): string
此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误
。
PHP 类型比较
虽然 PHP 是弱类型语言
,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。
松散
比较:使用两个等号==
比较,只比较值
,不比较类型。严格
比较:用三个等号===
比较,除了比较值
,也比较类型
。
例如,“42” 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 “FALSE” 是一个字符串。
<?php
if(42 == "42") {
echo '1、值相等';
}
echo PHP_EOL; // 换行符
if(42 === "42") {
echo '2、类型相等';
} else {
echo '3、类型不相等';
}
?>
以上实例输出结果为:
1、值相等
3、类型不相等
PHP中 比较 0、false、null
<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;//换行
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);
以上实例输出结果为:
0 == false: bool(true)
0 === false: bool(false)
0 == null: bool(true)
0 === null: bool(false)
false == null: bool(true)
false === null: bool(false)
"0" == false: bool(true)
"0" === false: bool(false)
"0" == null: bool(false)
"0" === null: bool(false)
"" == false: bool(true)
"" === false: bool(false)
"" == null: bool(true)
"" === null: bool(false)
即:
0falsenull==“”
“0”==false
“0”!=null
“0”!=“”
其他比较
对于其他更多的比较见下表:
PHP 常量
常量是一个简单值的标识符。该值在脚本中不能改变
。
一个常量由英文字母、下划线、和数字
组成,但数字不能作为首字母
出现。 (常量名不需要加 $
修饰符)。
注意: 常量在整个脚本
中都可以使用。
设置 PHP 常量
设置常量,使用 define()
函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
以下实例我们创建一个 区分大小写
的常量, 常量值为 “欢迎访问 Runoob.com”:
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义
?>
<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting; // 输出 "欢迎访问 Runoob.com"
?>
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。(菜鸟教程的一个错误点!)
以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。
<?php
echo GREETING;//在定义之前无法访问,会报错
define("GREETING", "欢迎访问 Runoob.com");
function myTest() {
echo GREETING;
}
myTest(); // 输出 "欢迎访问 Runoob.com"
echo here;//在声明之前,无法访问,报错
function test(){
define("here","这呢!");//定义在函数内部的常量只在函数内有效
}
echo here;//报错,出了函数体,无法访问
?>
所以,常量是在定义的该范围内才有效的。
参考资料
https://www.runoob.com/php/php-datatypes.html