PHP 2 - PHP数据类型 & 运算符

KaldX

数据类型

  • String(字符串)
  • Integer(整型)
    • 整型可以用三种格式来指定:十进制,十六进制(以 0x 为前缀)或八进制(前缀为 0)。
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
    • 示例:$cars = array("Volvo", "BMW", "Toyota");
  • Object(对象)
  • NULL(空值)
  • Resource(资源类型)

PHP对象

  • 在 PHP 中,对象必须声明。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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);
?>
  • $this 指向当前对象实例,不指向任何其他对象或类。

PHP资源类型

  • 一种特殊变量,保存了到外部资源的一个引用。
  • 常见资源数据类型有打开文件、数据库连接、图形画布区域等。
  • 由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
  • 使用 get_resource_type() 函数可以返回资源(resource)类型:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$c = mysql_connect();
echo get_resource_type($c) . "\n";
// 打印:mysql link

$fp = fopen("foo", "w");
echo get_resource_type($fp) . "\n";
// 打印:file

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc) . "\n";
// 打印:domxml document
?>

类型比较

松散比较和严格比较

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)

比较多种类型

  • 对于多种类型,比较运算符根据下表比较(按顺序)。
运算数1类型 运算数2类型 结果
null 或 string string 将 NULL 转换为 “”,进行数字或词汇比较
bool 或 null 任何其它类型 转换为 bool,FALSE < TRUE
object object 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4中),PHP 5有其自己的说明
string, resource 或 number string, resource 或 number 将字符串和资源转换成数字,按普通数学比较
array array 具有较少成员的数组较小,如果运算数1中的键不存在于运算数2中则数组无法比较,否则按个值比较(见下例)
object 任何其它类型 object 总是更大
array 任何其它类型 array 总是更大

PHP常量

  1. 不变性: 常量一旦定义,其值不能改变。
  2. 全局作用域: 常量在定义后,可以在整个脚本的任何地方使用,无需使用 global 关键字。
  3. 数据类型: 常量的值可以是标量数据类型(如布尔值、整数、浮点数、字符串)或数组(PHP 7 及以上版本)。
  4. 区分大小写: 常量名称默认是区分大小写的。如果需要定义大小写不敏感的常量,可以在 define() 函数的第三个参数设置为 true
  • 不需要加$修饰符

设置常量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive:可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。
  • 自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。
1
2
3
4
5
6
7
<?php
// 区分大小写的常量名
define("TEST", "123");
echo TEST; // 输出 "123"
echo '<br>';
echo TEST; // 输出 "123",但是有警告信息,表示该常量未定义
?>

使用const关键字

const CONSTANT_NAME = "value";

预定义常量

  • PHP_VERSION:当前 PHP 解析器的版本。
  • PHP_OS:服务器的操作系统。
  • PHP_INT_MAX:最大的整数值。
  • E_ERRORE_WARNINGE_PARSE 等:错误报告级别。

常量数组

1
2
3
4
5
6
7
define("FRUITS", [
"Apple",
"Banana",
"Orange"
]);

echo FRUITS[0]; // 输出 "Apple"
1
2
3
4
5
6
7
const COLORS = [
"Red",
"Green",
"Blue"
];

echo COLORS[1]; // 输出 "Green"

PHP字符串变量

PHP并置运算符

  • 并置运算符 (.) 用于把两个字符串值连接起来。
1
2
3
4
5
<?php
$txt1 = "Hello world!";
$txt2 = "What a nice day!";
echo $txt1 . " " . $txt2; // Hello world! What a nice day!
?>

strlen()函数

  • 返回字符串的长度(字节数)。
1
2
3
<?php
echo strlen("Hello world!"); // 12
?>

strpos()函数

  • 在字符串内查找一个字符或一段指定的文本。
  • 返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
1
2
3
<?php
echo strpos("Hello world!", "world"); // 6
?>

PHP 运算符

逻辑运算符

运算符 名称
x and y
x or y
x xor y 异或
x && y
x | y
! x

数组运算符

使用 + 运算符

  • + 运算符用于合并两个数组,但它不会覆盖具有相同键名的值。相同键名的值会保留第一个数组中的值。
1
2
3
4
5
6
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);

$result = $array1 + $array2;

print_r($result);

输出:

1
2
3
4
5
6
7
8
9
Array
(
[color] => red
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
)

组合比较符

  • 也被称作太空船操作符
  • $c = $a <=> $b;
  • 如果 $a > $b,则 $c 的值为 1
  • 如果 $a == $b,则 $c 的值为 0
  • 如果 $a < $b,则 $c 的值为 -1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$a = 5;
$b = 10;

$c = $a <=> $b; // $c 的值为 -1,因为 $a < $b

$a = 10;
$b = 10;

$c = $a <=> $b; // $c 的值为 0,因为 $a == $b

$a = 15;
$b = 10;

$c = $a <=> $b; // $c 的值为 1,因为 $a > $b
  • Title: PHP 2 - PHP数据类型 & 运算符
  • Author: KaldX
  • Created at : 2025-03-19 09:00:00
  • Updated at : 2025-03-20 15:00:00
  • Link: https://blog.kaldx.com/2025/03/19/PHP数据类型 & 运算符/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments