Q1:语言结构和函数的区别?

A1:

语言结构:就是PHP语言的关键词,语言语法的一部分;它不可以被用户定义或者添加到语言扩展或者库中;它可以有也可以没有变量和返回值.
函数:由代码块组成的,可以复用.

函数都要先被PHP解析器分解成语言结构,所以有此可见,函数比语言结构多了一层解析器解析.

语言结构和函数的不同:

语言结构比对应功能的函数快

语言结构在错误处理上比较鲁棒,由于是语言关键词,所以不具备再处理的环节

语言结构不能在配置项(php.ini)中禁用,函数则可以。

语言结构不能被用做回调函数

语言结构列表:

echo()

print()

die()

isset()

unset()

include()

require()

array()

list()

empty()

Q2:empty isset array_key_exists区别

A2:

首先要知道isset和empty是语言结构,而array_key_exists是函数.所以从性能上来说,
empty、isset性能会高于array_key_exists

empty 什么是空?

0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE(BOOL)
array() (an empty array)
$var; (a variable declared, but without a value)
"" (an empty string)

isset

 赋值为null,或者被unset的时候,才会返回false,否则都是被设置的

array_key_exists

$arr = ['a'=>null, 'b'=>'b'];
if (isset($arr['a']) || array_key_exists('a', $arr)) {
    echo 'is set'; 
} else {
    echo 'not set';
}

参考

PHP语言结构

[php中empty isset 和 array_key_exists的区别和技巧]

发表评论

电子邮件地址不会被公开。 必填项已用*标注