当数组下标为数值时 , 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运算符知识点整理的详细内容 , 更多请关注其它相关文章!
推荐阅读
- php网站启用伪静态的方法
- PHP一句话木马小结与SQL语句写一句话木马
- PHP调试之ChromePHP
- php多态性如何理解
- php如何搭建微服务
- php闭包有什么用?
- 基于ThinkPHP5.1.34 LTS开发的快速开发框架DolphinPHP
- phpstudy中apache无法启动怎么解决?
- php有多线程吗
- php运行模式有哪几种
