Determing空值,最好的方式做到这一点

Determing空值,最好的方式做到这一点

问题描述:

目前,每当我试图确定当一个变量没有定义我使用的代码Determing空值,最好的方式做到这一点

如果($变量==“”)

但是我有已经告诉人们使用的功能

如果(空($变量))

这一读,如果该值是0返回false,和我有很多数组值是零那不能是返回false。我总是可以添加|| $变量== 0)来跳过这个。

但我所问的是为什么这是一个确定空变量的首选方法,它是效率还是有更多的呢?

+0

这一切都取决于您的需求。 isset()和empty()是使用的主要方法。 – Brad 2012-02-11 02:12:56

+0

为什么这些方法优先于if($ var ==“”)的简单if语句? – JimmyBanks 2012-02-11 02:13:59

如果你需要知道,使用严格的类型比较:

if (empty($variable) && $variable !== 0) // !== instead of != 

一般来说,你应该使用isset() - 如果变量尚未定义,则返回false:

$a = 4; 
echo isset($a) ? 'a' : 'no a'; // a 
echo isset($b) ? 'b' : 'not to b'; // not to b 
+0

没问题isset实际上对于我所要求的更有意义,这仍然让我想知道,使用isset或empty的实际推理对if($ var ==“”)是有利的,因为这会导致代码运行正常 – JimmyBanks 2012-02-11 02:18:57

+1

如果变量尚未设置,则取决于PHP的配置方式,它可能会继续愉快地运行,或者可能会出错并停止。如果它继续下去,则需要**显着更长的时间来尝试从尚不存在的变量读取(阅读:通常不值得关心)。使用'isset()'的主要原因是因为它是**正确的方法**来检查:P哦,以及致命的错误。这也是一个很大的问题。 – Joe 2012-02-11 02:21:58

+0

好,所以它的主要效率,我从来没有收到它的错误信息,我有错误信息。生病开始我的代码切换到正确的使用,谢谢。 – JimmyBanks 2012-02-11 02:47:24

好吧,这是我的方式,我不认为它有什么问题...

if(!$variable) 

对于“”,0,(未定义)等返回true。表单输入的所有空白值。

+1

如果未设置$ variable,将会生成一个错误。 – Umbrella 2012-02-11 02:36:46

+0

它从来没有为我...这是为什么? – Deji 2012-02-11 02:38:38

+0

您的PHP的错误报告设置不得包含通知级别错误。或者,它正在记录到您没有检查的文件。可能是错误报告级别。 – Umbrella 2012-02-11 02:42:44