您的位置:首页 > 编程语言 > PHP开发

PHP基础——表达式、位运算、数组

2016-03-04 11:00 603 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  位运算 php 数组