操作符

  • 三元操作符的变化写法含义
$result =  "hello" ?: "world";
echo $result;

?: 三院操作符如果忽略?后边的值,表示如果条件为真,则表达式的结果为?左边的值.

运算符优先级

一些主要的运算符的优先级如下:
**new > instanceof > !> 比较运算符 > && > || > ? :赋值运算符 > and > or >, **

可以通过如下的例子具体体验一下

  
class Test{  
  
}  

var_dump( new Test() instanceof Test ||  0 ? false: true) ;  
var_dump( new Test() instanceof Test or 0 ? false: true) ;  
var_dump( new Test() instanceof Test || (0 ? false: true) ) ;  
?>  

数组加法运算与array_merge函数的区别

必要补充知识

  • 从PHP 5.4开始, 数组支持 [] 代替 array() 的写法,看起来更加简洁.
  • PHP的数组的键既可以是数字,也可以是字符串. 而且, 当字符串键可被处理为整形时,优先作为数字键对待. 因此 [‘1’ => ‘value’] 同 [ 1 => ‘value’] 相同, 即键 ‘1’ 和 1 都被看做1处理.
  • 数组如果不声明键, 则默认键从0开始一次递增.即["value", "value"][ 0 => "value", 1 => "value"]

数组加法运算与array_merge函数的区别比较

$a = ["hello_world" => 'PHP'];
$b = ["hello_world" => 'java'];
var_export($a + $b);

结果:
如果碰到相同的字符串键, 则在+的时候自动忽略后一个.因此结果为

array (
  'hello_world' => 'PHP',
)

而array_merge函数则是在碰到相同的字符串键,用后一个值去覆盖了前一个值.因此,

var_export(array_merge($a, $b));

输出结果:

array (
  'hello_world' => 'java',
)
$a = [3 => 'PHP'];
$b = [3 => 'java'];
var_export($a + $b);

数组+运算, 如果碰到相同的数字键, 则在+的时候自动忽略后一个.因此结果为:

结果为:

array (
  3 => 'PHP',
)

综上所述,不论是数字键还是字符串键,数组+运算会自动保留之前存在的键,而不会覆盖.

那么,array_merge函数对数字键有事怎么处理的呢?

$a = [3 => 'PHP'];
$b = [3 => 'java'];
var_export(array_mrege($a,$b));

array_merge函数会自动对数字键进行重新列, 其结果不会忽略任何一个数字键对应的元素.因此,结果:

array (
  0 => 'PHP',
  1 => 'java',
)

你可能感兴趣的:(php,array_merge,和,+,区别,php操作符优先级,三目运算符)