数据类型
- String(字符串)
- Integer(整型)
- 整型可以用三种格式来指定:十进制,十六进制(以
0x 为前缀)或八进制(前缀为 0)。
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- 示例:
$cars = array("Volvo", "BMW", "Toyota");
- Object(对象)
- NULL(空值)
- Resource(资源类型)
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");
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";
$fp = fopen("foo", "w"); echo get_resource_type($fp) . "\n";
$doc = new_xmldoc("1.0"); echo get_resource_type($doc->doc) . "\n";
?>
|
类型比较
松散比较和严格比较
- 松散比较:使用两个等号
== 比较,只比较值,不比较类型。
- 严格比较:用三个等号
=== 比较,除了比较值,也比较类型。
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常量
- 不变性: 常量一旦定义,其值不能改变。
- 全局作用域: 常量在定义后,可以在整个脚本的任何地方使用,无需使用
global 关键字。
- 数据类型: 常量的值可以是标量数据类型(如布尔值、整数、浮点数、字符串)或数组(PHP 7 及以上版本)。
- 区分大小写: 常量名称默认是区分大小写的。如果需要定义大小写不敏感的常量,可以在
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; echo '<br>'; echo TEST; ?>
|
使用const关键字
const CONSTANT_NAME = "value";
预定义常量
PHP_VERSION:当前 PHP 解析器的版本。
PHP_OS:服务器的操作系统。
PHP_INT_MAX:最大的整数值。
E_ERROR、E_WARNING、E_PARSE 等:错误报告级别。
常量数组
1 2 3 4 5 6 7
| define("FRUITS", [ "Apple", "Banana", "Orange" ]);
echo FRUITS[0];
|
1 2 3 4 5 6 7
| const COLORS = [ "Red", "Green", "Blue" ];
echo COLORS[1];
|
PHP字符串变量
PHP并置运算符
1 2 3 4 5
| <?php $txt1 = "Hello world!"; $txt2 = "What a nice day!"; echo $txt1 . " " . $txt2; ?>
|
strlen()函数
1 2 3
| <?php echo strlen("Hello world!"); ?>
|
strpos()函数
- 在字符串内查找一个字符或一段指定的文本。
- 返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
1 2 3
| <?php echo strpos("Hello world!", "world"); ?>
|
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;
$a = 10; $b = 10;
$c = $a <=> $b;
$a = 15; $b = 10;
$c = $a <=> $b;
|