1、PHP表达式 —— 任何有值的东西
(1)算数运算符
自加:++ 自减:--$_a = $_b++;echo $_a; //输出:1$_c = 1;$_a = $_c;$_c = $_c + 1;echo $_a; //输出:1其他: += , -= , /= , %=比较运算符: == 判等=== 全等,值相等,类型相同,返回true!== 值不相等,或类型不同,则返回true
(2)逻辑运算符
与: $_a and $_b $_a 和$_b都为true,则表达式为true$_a && $_b $_a 和$_b都为true,则表达式为true或:$_a or $_b $_a 或$_b为true,则表达式为true$_a || $_b $_a 或$_b为true,则表达式为true异或:$_a xor $_b $_a 和$_b不相同,则表达式为true取反:!$_a 如果$_a = true ,则返回false特别注意:运算符的优先级顺序||的优先级高于or,&&的优先级高于or= 的优先级比 or,and都高
(3)三元运算符
表达式:(expr1) ? (expr2) : (expr3)规则:在expr1求值为TRUE时值为expr2,在expr1求值为FALSE时值为expr3。
(4)字符串运算符
有两个字符串运算符,使用连接运算符(".").$_a = 10; $_b = 90; echo $_a . $_b ; 输出 1090
(5)类型运算符
instanceof用于确定一个PHP变量(对象)是否属于某一类class的实例
2、位运算
二进制: 0,1可以表示任何数字原码:用二进制来表示一个数原码,反码,补码对于有符号的而言:
(1)二进制的最高位是符号位:0表示正数,1表示负数
(2)正数的原码,反码,补码都一样
(3)负数的反码 = 它的原码符号位不变,其他位取反(0变1,1变0)
(4)负数的补码 = 负数的反码 + 1
(5)0的反码补码都是0
(6)php中的数都是有符号的
(7)在计算机运算的时候,都是以补码的方式运算的
1、位运算
(1) $a & $b 按位与,将$a和$b原码中都为1的位置设为1,都为0的位置设为0,输出结果(2) $a | $b 按位或,将$a和$b原码中,只要有一方该位置为1,就将该位置设置为1,输出结果(3) $a ^ $b 按位异或 只将$a和$b原码中数字不同的位置设置为1,输出结果(4) ~$a 按位取反,将$a原码中0变1,1变0,输出(5) $a << 2 左移 将$a的原码向左移动2位(每次向左移动一位,代表乘以2)(6) $a >> 2 右移 将$a的原码向右移动2位(每次向右移动一位,代表除以2)
注意:在32位系统上不要右移超过32位,不要在结果可能超过32位的情况下左移
2、位移运算
在php中位运算符有两种: >> (右移) << (左移)算数右移:低位溢出符号位不变,并用符号位补溢出的高位算数左移:符号位不变,低位补0
3、数组
可以用于存放多个数据的数据类型。1、数组的创建
(1)通过array创建数组
$数组名 = array(值,......);
例子:$arr = array(1,90,"hello",89.5); //PHP数组中的数据类型可以是任意的。
(2)直接添加元素创建数组
$arr[0] = 123;var_dump($arr);
默认情况下,数组的元素下标,是从0开始编号,但可自定义:
例如:
$arr ['logo'] = "beijing";
$arr['hsp'] = 123;
$arr = array("logo" => "beijing");
(3)多维数组
$arr3 = array(array(1,2,3),array(4,5,6));
var_dump($arr3);
2、数组的遍历
(1) foreach($arr as $val) {
echo $val;
}
(2)适用范围更广:
foreach($arr as $key => $val) {
echo '<br>'.$key.' = '.$val; //$key 关键字 $val 值
}
3、使用array来创建数组
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。例子:
$arr = array(5=>"logo",556,786);
echo $arr[5] ; //输出logo
echo $arr[6] ; //输出556
注意:(1)使用true作为键名时,等于使用integer 1作为键名,使用false作为键名时,等于使用integer 0.
(2)使用null作为键名将等于使用空字符串。
(3)使用小数作为键名,将自动截取整数部分
(4)不能使用数组和对象作为键(key),这样会导致一个警告:IIIegal offset type
php的数组可以动态增长!
4、关于数组的函数
(1)使用count函数统计数组条数,count($arr)(2)使用is_array函数判断数组,is_array($arr)(3)print_r($arr)和var_dump($arr) 可以显示数组数据(4)拆分字符串 explode(拆分条件,字符串)
$h = "1,2,3,4";
$arr = explode(",",$h);
var_dump($arr);
输出:array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" }
(5)sort函数,对索引数组进行升序排序。
本函数为数组中的单元赋予新的键名。原有的键名将被删除。
如果成功则返回 TRUE,否则返回 FALSE。
降序使用 rsort()
(6)删除数组中某个键值对
unset()函数允许删除数组中的某个键,要注意数组将不会重建索引
unset($arr[index]); 销毁指定元素
unset($arr); 清空整个数组
例子:
$h = "1,2,3,4";
$arr = explode(",",$h);
var_dump($arr); //输出 array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" }
echo '<br>';
unset($arr[2]);
var_dump($arr); //输出 array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [3]=> string(1) "4" }
5、数组运算符
(1)联合, + 运算符
把右边的数组元素(除去键值与左边数组相同的那些元素)附加到左边的数组后面,但重复的键值不会被覆盖。例子:
$arr1 = array('f' => "apple",'b' => "banana");$arr2 = array('c' => "coat",'b' => "banana",'e' => "evel");$arr3 = $arr1 + $arr2;var_dump($arr3);
(2)相等,$a == $b ,如果$a和$b具有相同的键值对,则返回true
(3)全等,$a === $b,如果$a和$b具有相同的键值对并且顺序相同,则为true
(4)不等,$a != $b,$a<>$b,如果$a和$b不相等,则为true
(5)不全等,$a !== $b,如果$a不全等于$b则为true