这两个片段是相同的
1)
if(isset($request->input('optionId'))){
....
....
....
// statements will go here
}
2)
$optionId = $request->input('optionId');
if(isset($optionId)){
....
....
....
// statements will go here
}
首次尝试时,IDE表示存在语法错误。当我保存它并运行解释器时说
“不能对表达式的结果使用isset()(可以使用”null !==表达“代替”“
但第二个正在执行。
我的问题是它分配给$ optionId时的问题是对的吗?为什么它在第二次尝试中运行而不是在第一次尝试中..有什么区别?
答案 0 :(得分:2)
您可以改为使用$request->has('optionId')
。
为了回答您的实际问题,PHP文档已经警告过它。
isset()仅适用于变量,因为传递任何其他内容都会产生 解析错误
参考:isset()
答案 1 :(得分:1)
我挖了一些,发现了真正的原因。想分享......
isset()
不是一个功能。它是一种语言结构。
语言结构是语言的构建块。他们很难进入解析器。所以我们无法重新定义那些。因此,isset()
很难进入解析器以仅接受变量。这就是为什么任何陈述都无法解析为isset()
。如果这就是Syntax error
函数已映射到一组语言结构。解析器允许在编译或运行时更改该映射。
摘要是 - >解析器是处理语言构造函数的人,在解析之前,内置函数被映射并简化为一组语言结构。
答案 2 :(得分:0)
因为您使用的是PHP 5.6+版本,所以isset()
支持的表达式仅在5.6版本之后起作用