PHP | php入门知识(数据类型、类型比较、常量、字符串、运算符)
一、数据类型
PHP 支持以下几种数据类型:
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
- Resource(资源类型)
1. 字符串
可以将任何文本放在单引号
和双引号
中
<?php $x = "Hello world!"; // 双引号echo $x;echo "<br>"; // 双引号$x = 'Hello world!'; // 单引号echo $x;
?>
结果:
2. 整数
注意:
- 整数可以是正数或负数
- 整型可以用三种格式来指定:
- 十进制
- 十六进制( 以 0x 为前缀)
- 八进制(前缀为 0)
<?php $x = 5678;var_dump($x); // 正整数echo "<br>";$y = -234; // 负整数var_dump($y);echo "<br>";$z = 0x8c; // 十六进制var_dump($z);echo "<br>";$a = 047; // 八进制var_dump($a);?>
输出结果:
3. 浮点型
浮点数是带小数部分的数字,或是指数形式(e或E后面加上一个整数n表示10的n次方)。
<?php $x = 18.635; // 带小数var_dump($x);echo "<br>";$y = 1.3e4; // 指数形式var_dump($y);echo "<br>";$z = 2E-3; // 指数形式var_dump($z);?>
输出结果:
4. 布尔型
true或false,不区分大小写(TRUE或FALSE也行)
<?php $x = true;var_dump($x);echo '<br>';$y = FALSE;var_dump($y);?>
输出结果:
5. 数组
数组可以在一个变量中存储多个相同或不同类型的值。
<?php $a = array(1,2, 2.5, 'okk', true);var_dump($a);?>
输出结果:
6. PHP对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明。
首先,必须使用class关键字声明类对象(类是可以包含属性和方法的结构。)
然后在类中定义数据类型,再在实例化的类中使用数据类型
<?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);?>
tips:
- PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。
- forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。 - 在$prop => $val中,$prop是关联数组的键,而$val是与该键关联的值。这个语法结构用于声明一个键值对,其中键和值可以是任何数据类型。
- get_object_vars () 函数返回由对象属性组成的关联数组
运行结果:
7. NULL值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
可以通过设置变量值为 NULL 来清空变量数据
<?php$x = "hello";var_dump($x);echo "<br>";$x = null;var_dump($x);
?>
输出结果:
8. PHP资源类型
PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。
常见资源数据类型有打开文件、数据库连接、图形画布区域等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
使用 get_resource_type() 函数可以返回资源(resource)类型:
get_resource_type(resource $handle): string
此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。
<?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
?>
二、类型比较
松散比较与严格比较
虽然 PHP 是弱类型语言,但也需要明白变量类型及其意义,因为经常需要对 PHP 变量进行比较,包含松散和严格比较。
- 松散比较:使用
两个等号 ==
比较,只比较值,不比较类型。 - 严格比较:用
三个等号 ===
比较,除了比较值,也比较类型。
<?phpecho "<pre>";if(42 == "42") {echo '1、值相等';}echo PHP_EOL; // 换行符if(42 === "42") {echo '2、类型相等';} else {echo '3、类型不相等';}
?>
输出结果:
tips:(PHP_EOL要起作用前要加pre)
PHP_EOL 是文本换行,并不是 html 换行。
在前边 加echo "<pre>";
做文本格式化处理,
后面的PHP_EOL就起作用了.
若不加echo "<pre>";
,则换行符无效
PHP中 比较 0、false、null
<?phpecho '<pre>';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);
?>
运行结果:
多种类型比较
三、常量
常量是一个简单值的标识符。该值在脚本中不能改变,但在全局均可使用
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
设置常量
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
define的三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。
说明:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。
1. 区分大小写的常量:(PHP7.3 版本之后不建议使用)
<?phpheader("Content-Type:text/html;charset=utf-8"); // 解决浏览器上显示中文乱码的问题// 区分大小写的常量名define("GREETING", "欢迎访问 edu.csdn.net");echo GREETING; // 输出 "欢迎访问 edu.csdn.net"echo '<br>';echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义
?>
运行结果:
2. 不区分大小写的常量
<?phpheader("Content-Type:text/html;charset=utf-8"); // 解决浏览器上显示中文乱码的问题// 不区分大小写的常量名define("GREETING", "欢迎访问 edu.csdn.net", true); // 增加参数trueecho GREETING; // 输出 "欢迎访问 edu.csdn.net"echo '<br>';echo greeting; // 输出 "欢迎访问 edu.csdn.net"
?>
运行结果:
全局使用
<?phpheader("Content-Type:text/html;charset=utf-8"); // 解决浏览器上显示中文乱码的问题define("GREETING", "欢迎访问 edu.csdn.net");function myTest() {echo GREETING;}myTest(); // 输出 "欢迎访问 edu.csdn.net"
?>
运行结果:
四、字符串
字符串变量用于包含有字符的值。
PHP 并置运算符(.)
在 PHP 中,只有一个字符串运算符,即并置运算符 (.)
并置运算符 (.) 用于把两个字符串值连接起来。
<?php$str1 = 'Hello';$str2 = 'World!';echo $str1." ".$str2;
?>
运行结果:
PHP strlen() 函数
strlen() 函数用于返回字符串的长度(字节数)。
例如:
<?phpheader("Content-Type:text/html;charset=utf-8");$str1 = 'Hello';echo strlen($str1);echo '<br>';echo strlen('hello world');
?>
运行结果:
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
举例:
echo strpos('hello world', 'w');
运行结果:
五、运算符
1. 算术运算符
运算符 | 名称 | 实例 | 输出结果 |
---|---|---|---|
+ | 加 | 1+2 | 3 |
- | 减 | 3-2 | 1 |
* | 乘 | 3*2 | 6 |
/ | 除 | 3/2 | 1.5 |
% | 模(取余) | 5%2 | 1 |
-x | 设置负数 | -2 | -2 |
~x | 取反(按二进制位进行"取反"运算) | ~1 | -2 |
a.b | 并置 (连接两个字符串) | “hello” . “World” | helloWorld |
2. 赋值运算符
运算符 | 等同于 |
---|---|
x = y | x = y |
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % y |
x .= y | x = x . y |
3. 递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++ x | 预递增 | x 加 1,然后返回 x |
x ++ | 后递增 | 返回 x,然后 x 加 1 |
– x | 预递减 | x 减 1,然后返回 x |
x – | 后递减 | 返回 x,然后 x 减 1 |
举例:
<?php$x=10; echo ++$x; // 输出11$y=10; echo $y++; // 输出10$z=5;echo --$z; // 输出4$i=5;echo $i--; // 输出5
?>
4. 比较运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,则返回 true 5==8 | 返回 false |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5===“5” 返回 false |
x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 不绝对等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!==“5” 返回true |
x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
5. 逻辑运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x and y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6;y=3;(x < 10 and y > 1) 返回 true |
x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6;y=3;(x==6 or y==5) 返回 true |
x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | x=6;y=3;(x==6 xor y==3) 返回 false |
x && y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6;y=3;(x < 10 && y > 1) 返回 true |
x || y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6;y=3;(x==5 || y==5) 返回 false |
! x | 非 | 如果 x 不为 true,则返回 true | x=6;y=3;!(x==y) 返回 true |
6. 数组运算符
运算符 | 名称 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
x != y | 不相等 | 如果 x 不等于 y,则返回 true |
x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
举例:
<?php$x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; // $x 和 $y 数组合并var_dump($z);var_dump($x == $y);var_dump($x === $y);var_dump($x != $y);var_dump($x <> $y);var_dump($x !== $y);
?>
输出结果:
7. 三元运算符
语法格式:
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
举例:
<?php// 普通写法$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';echo $username, PHP_EOL;// PHP 5.3+ 版本写法$username = $_GET['user'] ?: 'nobody';echo $username, PHP_EOL;
?>
注意:
在 PHP7+ 版本多了一个 NULL 合并运算符 ??
<?php// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值$username = $_GET['user'] ?? 'nobody';// 类似的三元运算符$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
8. 组合比较符(PHP7+版本)
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式:
$c = $a <=> $b;
说明:
- 如果 $a > $b, 则 $c 的值为 1
- 如果 $a == $b, 则 $c 的值为 0
- 如果 $a < $b, 则 $c 的值为 -1
举例:
<?php// 整型echo 1 <=> 1; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1// 浮点型echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1// 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1
?>