我不断发表如下声明:
我的问题是这些语言结构是什么,更重要的是我们为什么需要它们?
dec*_*eze 21
语言结构被硬编码到PHP语言中.他们不遵守正常规则.
例如,每当您尝试访问不存在的变量时,您都会收到错误.要在访问变量之前测试变量是否存在,您需要咨询isset或empty:
if (isset($foo))
Run Code Online (Sandbox Code Playgroud)
如果isset是正常函数,那么你也会收到警告,因为你正在访问$foo它以将它传递给函数isset.既然isset是语言结构,那么这可以不引发警告.这就是文档在正常函数和语言结构之间做出明确区分的原因.
语言结构是语言的组成部分:"if""for""while""function"等等.
在像"回声","死"或"返回" PHP手册中提到的有没有作出明确表示,这些都不是功能和他们并不总是表现得像功能.
您可以将"echo"称为"echo()",这样可能会让初学者感到困惑.这就是为什么他们在手册中加入明确的消毒.让每个人都清楚.
可能被误认为函数的语言结构的其他示例是"array()","list()"和"each()".
有些事情使用普通函数是不可能的,请考虑以下代码片段:
\n\nlist($el1, $el2) = array(\'el1\', \'el2\');
它的作用是从非关联数组中获取元素并将值分配给构造中定义的变量list()。
根本无法用函数来完成:)
\n\n一个更微妙的例子是isset和empty。虽然它们看起来像函数,但它们是单独使用函数不可能实现的一件事 \xe2\x80\x93 它们不会生成“变量未定义”或“未定义索引”通知。