PHP - 如果是简写

时间:2012-11-23 20:24:55

标签: php

快速提问。我在教程中看到简单的if语句是这样编写的:

if($vest) echo $vest->naslov

但是当我这样写的时候,我得到一个错误未定义变量:vest ,我必须以旧时尚的方式编写代码:

if(isset($vest)) echo $vest->naslov

php.ini 文件中是否有任何设置可以规范此操作?目前我在Ubuntu上使用LAMP(最新版本)。

6 个答案:

答案 0 :(得分:4)

你有E_STRICT,如果在检查之前没有声明变量,则会抱怨。您可以通过关闭E_STRICT中的php.ini 来解决此问题,但更好的办法就是提前简单地声明您的变量 - 只需这样做,在您的顶部功能:

$vest = null;

在你的其余逻辑之前。这是一种很好的做法,因为它会迫使您以更接近现实的方式思考程序的执行方式。

答案 1 :(得分:2)

您可以将error_reporting降低到E_ALL ^ E_NOTICE,但这实际上是一种不好的做法,可能导致很多难以追踪的错误。如果$vest是一个错字,你就不会知道,而你的条件永远不会奏效。

相反,尝试构建应用程序,以便始终知道哪些变量已定义,哪些变量未定义。然后,可以使用速记版本而不用担心。

答案 2 :(得分:1)

Undefined variable: vest错误表示无法识别变量$vestisset($vest)生成错误的原因是isset()检查$vest是否已设置。因此,如果(isset($ vest))将对isset($vest)的返回值进行布尔检查。

如果你只使用if($vest),那么php会假设$vest已经设置(实际上,$vest仍未定义)并且它会进行布尔检查操作。

答案 3 :(得分:1)

您可以调低错误报告级别并忽略错误,但这将是危险的编程习惯。

当您输入if($vest)时,您的意思是$vest==null$vest==''$vest===''isempty($vest)$vest===true或isset( $背心)`?

if语句有很多用途;你应该在你的代码中清楚地知道你在做什么。在脚本顶部初始化变量真的很难吗?

答案 4 :(得分:1)

我认为最好将变量声明为负面状态,然后 - 如果未设置它们,或者将它们设置为false,那么 - 速记if将按您的意图行事。

忽略错误是错误的(它们存在原因,您的代码将更易读,因此可维护)。

答案 5 :(得分:1)

if($foo)if(isset($foo))不是一回事,不应互换使用。

if($foo)检查是否$foo评估为真。另一种写作方式是:if( (bool) $foo === true )。因此,如果未定义$foo,则需要PHP的通知。

不像一些人建议的那样关闭通知,而是以正确的方式编写代码。要检查是否已定义$foo,请始终使用isset()