快速提问。我在教程中看到简单的 if 语句是这样写的:
if($vest) echo $vest->naslov
但是当我这样写时,我得到一个错误 Undefined variable: vest并且我必须以旧方式编写代码:
if(isset($vest)) echo $vest->naslov
php.ini文件中是否有任何设置来规范这一点?目前我在 Ubuntu(最新版本)上使用 LAMP。
快速提问。我在教程中看到简单的 if 语句是这样写的:
if($vest) echo $vest->naslov
但是当我这样写时,我得到一个错误 Undefined variable: vest并且我必须以旧方式编写代码:
if(isset($vest)) echo $vest->naslov
php.ini文件中是否有任何设置来规范这一点?目前我在 Ubuntu(最新版本)上使用 LAMP。
你有E_STRICT
,如果你在检查变量之前没有声明变量,它会抱怨。您可以通过关闭E_STRICT
in来解决此问题php.ini
,但更好的主意是提前声明变量 - 只需在函数顶部执行此操作:
$vest = null;
在你的其他逻辑之前。这是一种很好的做法,因为它迫使您以更接近现实的方式思考程序的执行方式。
您可以降低error_reporting
到E_ALL ^ E_NOTICE
,但这实际上是一种不好的做法,可能会导致很多难以追踪的错误。如果$vest
是一个错字,你不会知道,你的条件永远不会奏效。
相反,尝试构建您的应用程序,以便您始终知道哪些变量已定义,哪些未定义。然后,您可以放心使用速记版本。
我会说最好将变量声明为负状态,然后 - 如果它们没有设置,或者它们被设置为 false 那么 - 速记if
将按照你的意图行事。
忽略错误是不好的(它们的存在是有原因的,并且您的代码将更具可读性,因此可维护)。
if($foo)
和if(isset($foo))
不是一回事,不应该互换使用。
if($foo)
检查$foo
计算结果是否为真。另一种写作方式是:if( (bool) $foo === true )
. 因此,如果$foo
未定义,则需要来自 PHP 的通知。
与其像某些人建议的那样关闭通知,不如以正确的方式编写代码。要检查是否$foo
已定义,请始终使用isset()
.
Undefined variable: vest
错误意味着$vest
无法识别变量。isset($vest)
不产生错误的原因是因为isset()
检查是否$vest
已经设置。因此 if(isset($vest)) 将对isset($vest)
.
如果您只使用if($vest)
,php 将假定$vest
已设置(实际上$vest
仍然未定义)并执行布尔检查操作。
您可以调低错误报告级别并忽略错误,但这将是危险的编程实践。
当你输入这个:if($vest)
时,你真的是指$vest==null
or $vest==''
or or or $vest===''
or isempty($vest)
or $vest===true
or isset($vest)`?
if 语句有很多用途;您应该在代码中明确说明您在做什么。在脚本顶部初始化变量真的很难吗?