旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

PHP运算符知识点整顿【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:79


导读:一、算术运算符1.概览2.TIPS除法运算符老是返回浮点数。只要在以下状况破例:两个操作数都是整数(或字符串转换成的整数)而且正好能整除,这时候它返回一个整...
一、算术运算符

1. 概览

2. TIPS

除法运算符老是返回浮点数。只要在以下状况破例:两个操作数都是整数(或字符串转换成的整数)而且正好能整除,这时候它返回一个整数。

取模运算符的操作数在运算之前都邑转换成整数(撤除小数部份)。

取模运算符 % 的结果和被除数的标记(正负号)雷同。即 $a % $b 的结果和 $a 的标记雷同。比方:

echo (5 % 3)."\n";        // prints 2
echo (5 % -3)."\n";        // prints 2
echo (-5 % 3)."\n";        // prints -2
echo (-5 % -3)."\n";       // prints -2

二、位运算符

1. 概览

2. TIPS

位移在 PHP 中是数学运算。

向任何方向移出去的位都被扬弃。

左移时右边以零添补,标记位被移走意味着正负号不被保存。

右移时左边以标记位添补,意味着正负号被保存。

运用位运算符时要特别注重优先级。比方 :

$a & $b == true 先举行比较再举行按位与;

($a & $b) == true 则先举行按位与再举行比较。

三、比较运算符

1. 概览

2. TIPS

假如比较一个数字和字符串或许比较涉及到数字内容的字符串,则字符串会被转换为数值而且比较依据数值来举行。此划定规矩也适用于 switch 语句。当用 === 或 !== 举行比较时则不举行范例转换,由于此时范例和数值都要比对。

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
switch ("a") {
case 0:
    echo "0";
    break;
case "a": // 永久不会抵达a,由于 "a" 已与 0 婚配
    echo "a";
    break;
}
?>

3. 关于多种范例,比较运算符依据下表比较(按递次)

4. 松懈比较表

四、递增/递减运算符

1. 概览

2. TIPS

递增/递减运算符不影响布尔值。

递减 NULL 值也没有结果,然则递增 NULL 的结果是 1。

在处置惩罚字符变量的算数运算时,PHP 因循了 Perl 的习气,而非 C 的。

比方,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。

注重字符变量只能递增,不能递减,而且只支撑纯字母(a-z 和 A-Z)。

递增/递减其他字符变量则无效,原字符串没有变化。

五、逻辑运算符

1. 概览

2. TIPS

“与”和“或”有两种差别情势运算符的原因是它们运算的优先级差别。

// "&&" 比 "and" 的优先级高
// 表达式 (true && false) 的结果被赋给 $g
// 等同于:($g = (true && false))
$g = true && false;
// 常量 true 被赋给 $h,false 被疏忽
// 等同于:(($h = true) and false)
$h = true and false;

六、数组运算符

1. 概览

2. TIPS

数组中的单位假如具有雷同的键名和值则比较时相称

$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)

+ 运算符 和 array_merge() 的区分

当数组下标为字符时,碰到雷同键名,+ 运算符会扬弃掉背面的值; array_merge()会用背面的值掩盖前面的值。

当数组下标为数值时, array_merge()会保存一切的值,并从新索引数组。+ 运算符同样会扬弃掉背面具有雷同下标的值。

$arr1 = ['color' => 'red', 10, 20];
$arr2 = [0, 1, 'color' => 'green'];
print_r($arr1 + $arr2);
print_r(array_merge($arr1, $arr2));

输出:

Array ( [color] => red [0] => 10 [1] => 20 ) 
Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )

七、运算符优先级

1. 概览

2. TIPS

假如运算符优先级雷同,那运算符的连系方向决议了该怎样运算。比方,"-"是左联的,那末 1 - 2 - 3 就等同于 (1 - 2) - 3 而且结果是 -4. 别的一方面,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。

没有连系的雷同优先级的运算符不能连在一起运用,比方 1 < 2 > 1 在PHP是不正当的。但别的一方面表达式 1 <= 1 == 1 是正当的, 由于 == 的优先级低于 <=。

括号的运用,哪怕在不是必要的场所下,经由过程括号的配对来明白标明运算递次,而非靠运算符优先级和连系性来决议,一般能够增添代码的可读性。

偏重影象:

递增/递减 > ! > 算术运算符 > 大小比较 > (不)相称比较 > 援用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or

3. 实战例题

请写出以下顺序输出的结果

$a = 0;
$b = 0;
if ($a = 3 > 0 || $b = 3 > 0) 
{
    $a++;
    $b++;
    echo $a. "\n";
    echo $b. "\n";
}

例题剖析

1.题目中包括 = > || 三种运算符,优先级递次为 > > || > =

2.$a = 3 > 0 || $b = 3 > 0 等价于 $a = ( ( 3 > 0 ) || $b = ( 3 > 0 ) )

3.( 3 > 0 ) 为 true,因而不会再运算 || 背面的式子

4.$a = true,所以顺序能够改写为

$a = 0;
$b = 0;
if ($a = true) 
{
    $a++;
    $b++;
    echo $a. "\n";
    echo $b. "\n";
}

5.由于 “递增/递减运算符不影响布尔值”,所以 $a++ 后,$a 的值依然是 true,echo true,会输出 1

6.由于 $b = 0 ,所以 $b++ 后,$b 的值为 1

7.输出结果为

1
1

以上就是PHP运算符知识点整顿的细致内容,更多请关注ki4网别的相干文章!

标签:PHP运算符