PHP运算符知识点整理-php教程

资源魔 35 0
1、算术运算符

1. 概览

7b3c2efbe1c626bdbe569543878cd48.png

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

2、位运算符

1. 概览

304ca5bbebd4bdc6c37ffddfd719697.png

2. TIPS

位移正在 PHP 中是数学运算。

向任何标的目的移进来的位都被抛弃。

左移时右侧以零填充,符号位被移走象征着正负号没有被保存。

右移时左侧以符号位填充,象征着正负号被保存。

应用位运算符时要特地留意优先级。例如 :

$a & $b == true 进步前辈行比拟再进行按位与;

($a & $b) == true 则进步前辈行按位与再进行比拟。

3、比拟运算符

1. 概览

e19057bc7e97b5c8b6507fe3288e6fa.png

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. 关于多品种型,比拟运算符依据下表比拟(按程序)

688c73ff37a98d7656c19fbb18a49fb.png

4. 紧凑比拟表

62d69305f26b0ca2a1f6d459e84adf9.png

4、递增/递加运算符

1. 概览

f6dfeefa239c4957530144e94bfc2d4.png

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)。

递增/递加其余字符变量则有效,原字符串不变动。

5、逻辑运算符

1. 概览

4d3764653f706a820fff49db6b41446.png

2. TIPS

“与”以及“或”有两种没有同方式运算符的缘由是它们运算的优先级没有同。

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

6、数组运算符

1. 概览

5d7d68c0f55c1dc86d8968703fbc04c.png

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 )

7、运算符优先级

1. 概览

ebf9df56d389d29de2b02e2dae7ee80.png

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运算符常识点整顿的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 PHP运算符

抱歉,评论功能暂时关闭!