php第三天--运算符和表达式
1、强制类型转化
1、类型转化函数 intval floatval strval boolval
【注】转化的是值,被转变量的类型和值都不变
2、变量前面加上() 强制转化
$f = '123.9abc123';
$s = (int)$f;
3、settype(变量, 类型)
$f = '123.67abc';
settype($f, 'float');
var_dump($f);
【注】类型要用字符串
【注】编码格式,=两边要加空格,逗号后面要加空格
注意事项
空转为整型会为整型的0
空转为浮点会为浮点的0
空转为字符串为空字符串‘’
浮点的123.0转为字符串会为字符串123
浮点的123.2转为字符串会为字符串的123.2
浮点即使小数点再大,转为整数时都会被干掉,会舍掉小数点后面的值
字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值
2、自动类型转化
字符串、布尔、整型、浮点
.运算符:用来拼接字符串。
【注1】进行加减乘除运算,字符串都会自动转为整型或浮点。
【注2】bool类型参与运算,true转为1,false转为0
【注3】如果两个变量执行 . 运算符,那么都会先转化为字符串,然后再拼接,bool类型转为字符串,true转为1,false转为0
【注4】如果字符串或者整型放到if括号里面或者执行逻辑运算,那么他们都先转为bool类型。
注意事项
1、整型的0为假,其他整型值全为真
2、浮点数,全为0就是假,其它都为真。
3、空字符串为假,只要里面有一个空格都算真。
4、字符串里面只有一个0为假,其它都为真
5、空数组也将其视为假,只要里面有一个值,就为真。
6、空也为假
7、未声明成功的资源也为假
3、isset empty is_null bool区别
isset:判断变量是否有空间
empty:只要其转化bool值是false的都是空的
is_null:只有昨天产生的那三种情况是null
empty和bool值正好相反
isset和is_null正好相反
4、常量
常量定义
在程序的运行过程中,其值不能改变的量
定义形式: define('常量名', '常量值');
注意事项
1、常量名要用单引号括起来
2、常量名一般都使用大写字母
3、常量值只能是标量
4、常量的作用域是全局的
5、常量不能写到字符串中
系统常量
LINE :当前行号
FILE :当前文件全路径
DIR :当前文件目录路径
PHP_OS :php运行操作系统
PHP_VERSION:php版本号
FUNCTION:当前函数名
M_PI :圆周率
魔术常量
(了解)
__CLASS__ :当前类名
__METHOD__:当前成员方法名
__NAMESPACE__:当前命名空间
常量判断
判断一个常量是否被定义过。
defined('常量名'); 如果定义过返回true,没有定义过返回false
【注】括号里常量必须加单引号
5、可变变量
$hello = 'world';
$world = 'baby';
$baby = 'xiaoming';
echo $$$hello;
打印结果为 'xiaoming'
6、变量引用
$a = 250;
$b = &$a;
$b = 300;
echo $a.'<br />';
echo $b.'<br />';
这种写法,修改一个两个都被修改了
$b = $a; 修改一个和另一个没有任何关系
7、运算符和表达式
表达式定义:
表达式就是由变量、常量、运算符组成的式子。
【注】所有表达式都是有值的。
$a + $b $a > $b 3 + 5
算术运算符 + - * / % .
%:取余 5 % 2 = 1 2 % 5 = 2
作用:
对2取余,可以判断奇偶性
对某某取余,可以判断是否可以被某某整除
对10取余,可以将个位数拿出来
. :字符串拼接符号,用来拼接字符串
算术表达式的值就是你数学运算的结果
赋值运算符 = += *= /= %= .=
将等号右边表达式的值赋给等号左边的变量。
【注】等号左边只能是变量。
赋值表达式的值就是等号左边变量的值
关系运算符 > < >= <=
100 <= $a <= 300 错误,没有这种写法
==:模糊等
【注】判断的时候,一般将数字写到前面
!=:模糊不等
===:全等
!==:不全等
表达式的值:只有两个,true和false,关系成立就是true,不成立就是false
自增自减运算符 ++ --
$a++ ++$a $a-- --$a
无论是$a++还是++$a都是自增运算符,执行完之后,变量$a的值都要加1
$b = ++$a; 先加再用 先将变量$a的值加1,然后再将$a赋给$b
$b = $a++; 先用再加 先将变量$a的值赋给$b,然后再将$a加1
逻辑运算符 && || ! and or xor
逻辑与 && and
表达式1 表达式2 表达式1 && 表达式2
真 真 真
真 假 假
假 真 假
假 假 假
用一句来概括,只要有一个为假,那么整个表达式就是假
$a >= 100 && $a <= 300
逻辑或 || or
表达式1 表达式2 表达式1 || 表达式2
真 真 真
真 假 真
假 真 真
假 假 假
用一句来概括,只要有一个为真,那么整个表达式就是真
($a % 3 == 0) || ($a % 5 == 0)
逻辑异或 xor
表达式1 表达式2 表达式1 xor 表达式2
真 真 假
真 假 真
假 真 真
假 假 假
用一句来概括,相异为真,相同为假
逻辑非 !
表达式 !表达式
真 假
假 真
位运算符 & | ^ ~ << >> (了解)
1个0或者1个1叫做1位,8位叫做1个字节。
下面都以8位举例:
按位与 &
$a & $b
0&1 = 0 1&1 = 1 1&0 = 0 0&0 = 0
0000 0010 2
0000 1100 & 12
0000 0000
按位或 |
$a | $b
0|1 = 1 1|1 = 1 1|0 = 1 0|0 = 0
0000 0010 2
0000 1100 | 12
0000 1110
按位异或 ^
$a ^ $b
0^1 = 1 1^1 = 0 1^0 = 1 0^0 = 0
0000 0010 2
0000 1100 ^ 12
0000 1110
取反 ~
~$a;
0 1 1 0
1100 0010
0011 1101
左移
$a<<2
1010 1001
1010 100100
1010 0100
0000 0001
0000 0010
0000 0100
0000 1000
右移
$a>>2
1010 1001
0010 1010
短路概念
我们在逻辑运算符(与和或)中会出现短路现象。
表达式1 && 表达式2
当程序发现表达式1是假的时候,那么表达式2就不会再计算了。
表达式1 || 表达式2
当程序发现表达式1是真的时候,那么表达式2就不会再计算了。
&& &
|| |
三元运算符 ?:
这是唯一的一个三元运算符,什么叫三元?
双目运算符 单目运算符 三目运算符
格式:
表达式1?表达式2:表达式3
整个表达式的值取决于表达式1,如果表达式1为真,那么整个表达式的值就是表达式2的值,如果表达式1为假,那么整个表达式的值就是表达式3的值。
$a $b
$max = $a > $b ? $a : $b;
$a $b $c
$max = ($a > $b ? $a : $b) > $c ? ($a > $b ? $a : $b) : $c;
其它运算符
`` @ => ->
优先级问题
记得添加小括号即可