Php 为什么我能';t将isset()与laravel$request一起使用->;输入(';键';)

Php 为什么我能';t将isset()与laravel$request一起使用->;输入(';键';),php,laravel,post,laravel-5,get,Php,Laravel,Post,Laravel 5,Get,这两个片段是相同的 (一) (二) 第一次尝试时,IDE说有语法错误。当我保存并运行它时,翻译说 无法对表达式的结果使用isset()(可以使用“null !==表达式“相反”) 但第二个是执行良好 我的问题是当它被分配到$optionId时是一样的,对吗?为什么它在第二次尝试中运行,而不是在第一次尝试中运行。。区别是什么?您可以使用$request->has('optionId') 为了回答您的实际问题,PHP文档已经对此提出了警告 isset()只适用于变量,因为传递任何其他内容都会导致 在

这两个片段是相同的

(一)

(二)

第一次尝试时,IDE说有语法错误。当我保存并运行它时,翻译说

无法对表达式的结果使用isset()(可以使用“null !==表达式“相反”)

但第二个是执行良好


我的问题是当它被分配到$optionId时是一样的,对吗?为什么它在第二次尝试中运行,而不是在第一次尝试中运行。。区别是什么?

您可以使用
$request->has('optionId')

为了回答您的实际问题,PHP文档已经对此提出了警告

isset()只适用于变量,因为传递任何其他内容都会导致 在分析错误中


Ref:

您可以使用
$request->has('optionId')

为了回答您的实际问题,PHP文档已经对此提出了警告

isset()只适用于变量,因为传递任何其他内容都会导致 在分析错误中


Ref:

因为您使用的是PHP5.6+版本,所以仅从5.6版本开始支持
isset()
函数的表达式

因为您使用的是PHP5.6+版本,所以仅从5.6版本开始支持
isset()
函数的表达式

我挖掘了一些表达式,并找到了真正的原因。想分享

isset()
不是函数。它是一种语言结构。 语言结构是语言的组成部分。它们被硬记录到解析器中。所以我们不能重新定义这些。因此,
isset()
被硬记录到解析器中,以便只接受变量。这就是为什么任何语句都无法解析为
isset()
。如果这样做,那就是
语法错误的原因

另一方面,函数映射到一组语言结构。解析器允许在编译或运行时更改该映射


总结是->解析器是处理语言构造函数的人,在解析之前,内置函数被映射并简化为一组语言构造。

我挖掘了一些,找到了真正的原因。想分享

isset()
不是函数。它是一种语言结构。 语言结构是语言的组成部分。它们被硬记录到解析器中。所以我们不能重新定义这些。因此,
isset()
被硬记录到解析器中,以便只接受变量。这就是为什么任何语句都无法解析为
isset()
。如果这样做,那就是
语法错误的原因

另一方面,函数映射到一组语言结构。解析器允许在编译或运行时更改该映射


summary is->parser是处理语言构造函数的人,在解析之前,内置函数映射并简化为一组语言构造。

阅读“”部分。好的,我可以使用$request->has('optionId')。这很有帮助。但它并没有回答问题,这就是为什么我从来没有发布过答案,而是一条评论,因为它说明了应该如何做,而不是你的实际问题。@NuoneAttyGalle也回答了你的问题。请阅读“”部分。好的,我可以使用$request->has('optionId')。这很有帮助。但它并没有回答这个问题,这就是为什么我从来没有发布过答案,而是一条评论,因为它说明了应该如何做,而不是你的实际问题。@NuoneAttyGalle也回答了你的问题。从
语法
错误改回
语法
错误。我真的复制粘贴了它。如果您仍然认为您的建议是正确的,请继续并建议PHP文档中的更改,这将对许多人有所帮助。:)由于语法错误而发生分析错误。当我编写代码时,ide警告说有语法错误。当编译器试图解析有语法错误的代码时,结果将是解析错误。因此,在解释语言(PHP、ASP等)中,在运行代码时会发生解析错误,因为它是同时编译和运行的。所以语法和解析这两个错误都发生在这个上下文中,从
syntax
error改回
parse
error,正如文档明确指出的那样。我真的复制粘贴了它。如果您仍然认为您的建议是正确的,请继续并建议PHP文档中的更改,这将对许多人有所帮助。:)由于语法错误而发生分析错误。当我编写代码时,ide警告说有语法错误。当编译器试图解析有语法错误的代码时,结果将是解析错误。因此,在解释语言(PHP、ASP等)中,在运行代码时会发生解析错误,因为它是同时编译和运行的。语法和解析这两个错误都发生在这个上下文中是的,isset只是另一种语言结构,就像if、echo、die和return一样。能够调用
echo
作为
echo()
是让人们感到困惑并认为自己是函数的原因,isset只是另一种语言结构,就像if、echo、die和return一样。能够调用
echo
作为
echo()
是让人们感到困惑并认为自己是函数的原因
if(isset($request->input('optionId'))){
  ....
  ....
  ....
  // statements will go here 
}
$optionId = $request->input('optionId');

if(isset($optionId)){
  ....
  ....
  ....
  // statements will go here 
}