快速提问。我在教程中看到简单的if语句是这样编写的:
if($vest) echo $vest->naslov
但是当我这样写的时候,我得到一个错误未定义变量:vest ,我必须以旧时尚的方式编写代码:
if(isset($vest)) echo $vest->naslov
php.ini 文件中是否有任何设置可以规范此操作?目前我在Ubuntu上使用LAMP(最新版本)。
答案 0 :(得分:4)
你有E_STRICT
,如果在检查之前没有声明变量,则会抱怨。您可以通过关闭E_STRICT
中的php.ini
来 来解决此问题,但更好的办法就是提前简单地声明您的变量 - 只需这样做,在您的顶部功能:
$vest = null;
在你的其余逻辑之前。这是一种很好的做法,因为它会迫使您以更接近现实的方式思考程序的执行方式。
答案 1 :(得分:2)
您可以将error_reporting
降低到E_ALL ^ E_NOTICE
,但这实际上是一种不好的做法,可能导致很多难以追踪的错误。如果$vest
是一个错字,你就不会知道,而你的条件永远不会奏效。
相反,尝试构建应用程序,以便始终知道哪些变量已定义,哪些变量未定义。然后,可以使用速记版本而不用担心。
答案 2 :(得分:1)
Undefined variable: vest
错误表示无法识别变量$vest
。 isset($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()
。