类型比较
虽然PHP是弱类型语言,但是对于变量的比较还是有一些不同
松散比较:使用==
比较,只比较值,不比较类型
严格比较:使用===
比较,除了比较值,也比较类型
例如1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$x="25";
$y=25;
var_dump($x);
var_dump($y);
if ($x==$y){
echo "True\n";
}else{
echo "False\n";
}
if ($x===$y){
echo "True\n";
}else{
echo "False\n";
}
运行结果:1
2
3
4string(2) "25"
int(25)
True
False
可以看到$x是”25”是一个字符串,而$y是一个整型
但是在使用==时会判等,因为只比较了值而没有比较类型
常量
PHP5中增加了一条规则:常量被定义后,在脚本的其他任何地方都不能改变
常量是一个简单的标识符,该值在脚本中不能被改变
设置常量
设置常量使用define()函数1
bool define ( string $name , mixed $value , bool $case_insensitive = false )
有三个参数:
name:必选参数,常量名称,即标识符
value:必选参数,常量的值
case_insensitive:可选参数,如果设置为True,该常量则大小写不敏感。默认时大小写敏感的
例如:1
2
3
4
5
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo greeting; // 输出 "greeting"
不区分大小写:1
2
3
4
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting; // 输出 "欢迎访问 Runoob.com"
常量是全局的,常量在定义之后,默认是全局变量,可以在任意地方使用
1 |
|
字符串变量
字符串变量用于存储并处理文本
字符串变量用于包含有字符的值,在创建字符串之后,就可以进行操作了
1 |
|
运行结果就是$txt中的值
PHP7的版本中,不再区分单引号和双引号,使用哪一个都可以定义字符串变量
并置运算符
PHP中只有一个字符串运算符,就是.
用于把两个字符串值连接起来
1 |
|
运行结果:1
Hello world! What a nice day!
strlen()函数
看函数名字基本上就知道是返回字符串长度的函数1
2
echo strlen("Hello world!");
运行结果就是12
该函数常常用在循环和其他函数中,因为确定字符串何时结束是很重要的
strpos()函数
strpos()函数用于在字符串中查找一个字符或一段指定的文本,如果字符串中找到匹配,就会返回第一个匹配的字符位置,如果没找到就返回False
1 |
|
运行结果为6
这里为什么不是7,是因为字符串中的第一个字符是以0开始而不是1
完整PHP String手册参考一下
https://www.runoob.com/php/php-ref-string.html
运算符
算数运算符
描述 | 引入方法 | 描述 | 实例 | 结果 |
---|---|---|---|---|
x + y | 加 | x 和 y 的和 | 2 + 2 | 4 |
x - y | 减 | x 和 y 的差 | 5 - 2 | 3 |
x * y | 乘 | x 和 y 的积 | 5 * 2 | 10 |
x / y | 除 | x 和 y 的商 | 15 / 5 | 3 |
x % y | 模 | x 除以 y 的余数 | 5 % 2 | 1 |
- x | 取反 | x 取反 | $x=-2 echo -$x | -2 |
a . b | 并置 | 连接两个字符串 | “Hi” . “Ha” | HiHa |
例如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo "\n"; // 换行
echo ($x - $y); // 输出4
echo "\n"; // 换行
echo ($x * $y); // 输出60
echo "\n"; // 换行
echo ($x / $y); // 输出1.6666666666667
echo "\n"; // 换行
echo ($x % $y); // 输出4
echo "\n"; // 换行
echo -$x;
运行结果:1
2
3
4
5
616
4
60
1.6666666666667
4
-10
PHP7+之后增加了整除运算符intdiv()1
2<?php
var_dump(intdiv(10, 3));
运行结果:1
int(3)
赋值运算符
运算符 | 等同于 | 描述 |
---|---|---|
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 | 模 |
a.=b | a=a.b | 连接两个字符串 |
例如: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
28
29
$x=10;
echo $x; // 输出10
echo "\n";
$y=20;
$y += 100;
echo $y; // 输出120
echo "\n";
$z=50;
$z -= 25;
echo $z; // 输出25
echo "\n";
$i=5;
$i *= 6;
echo $i; // 输出30
echo "\n";
$j=10;
$j /= 5;
echo $j; // 输出2
echo "\n";
$k=15;
$k %= 4;
echo $k; // 输出3
echo "\n";
运行结果:1
2
3
4
5
610
120
25
30
2
3
递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++x | 预递增 | x加1,然后返回x |
x++ | 后递增 | 返回x,然后x加1 |
—x | 预递减 | x减1,然后返回x |
x— | 后递减 | 返回x,然后x减1 |
例如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$x=10;
echo ++$x; // 输出11
echo "\n";
$y=10;
echo $y++; // 输出10
echo "\n";
$z=5;
echo --$z; // 输出4
echo "\n";
$i=5;
echo $i--; // 输出5
echo "\n";
运行结果:1
2
3
411
10
4
5
比较运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
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 |
1 | <?php |
运行结果:1
2
3
4
5
6bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
逻辑运算符
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
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 | 非 | 如果x不为true,则返回true | x=6 y=3 !(x==y)返回true |
数组运算符
运算符 | 名称 | 描述 |
---|---|---|
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 |
1 |
|
运行结果:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15array(4) {
["a"]=>
string(3) "red"
["b"]=>
string(5) "green"
["c"]=>
string(4) "blue"
["d"]=>
string(6) "yellow"
}
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
三元运算符
另一个条件运算符是”?:”(或三元)运算符
1 | (expr1) ? (expr2) : (expr3) |
expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3
1 |
|
运行结果:1
2菜鸟教程
菜鸟教程
注意:PHP_EOL 是一个换行符,兼容更大平台
PHP7+版本多了一个NULL合并运算符??
1
2
3
4
5<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
组合比较符(PHP7+)
PHP7+ 支持组合比较符,也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较
1 | $c = $a <=> $b; |
解析如下:
如果$a>$b,则$c的值为1
如果$a==$b,则$c的值为0
如果$a<$b,则$c的值为-1
1 |
|
运行结果:1
2
3
4
5
6
7
8
90
-1
1
0
-1
1
0
-1
1
总结
1.==和===很常用,可以理解为前者睁一只眼闭一只眼,后者一只都不闭
2.define()是PHP5版本的函数,在PHP7+之后基本上都使用在类的内部定义的常量。使用const申明定义,以后遇到类再说
3.intdiv()类似于取整函数,向下取整而不是四舍五入
4.字符串和数组一样都是以0开头计数