Php 空和空之间有什么区别?
我不熟悉空和空的概念。虽然我努力理解它们之间的区别,但我更困惑。我在上看到一篇文章,但我仍然不知道在验证表单时何时使用isset和empty。鉴于我没有理解其中的区别,我不想使用不正确的函数,也不想在其他领域使用这些函数。有人能举例帮助我理解吗?我对编码非常陌生,因此如果有人能给我提供真实世界的示例,同时让noob能够理解,我将不胜感激。Null是一个占位符,通常意味着“没有关于这方面的数据可用” 在这方面使用null只是一种约定,但却是一种相当普遍的约定,以至于有些编程语言直接支持该约定。这个惯例存在的原因在历史上与“指针”有关; 很多时候,一个过程会被定义为返回一个指向答案的指针,如果由于某种原因无法生成答案,它会返回传统上称为空指针的指针 空表示(如果这是一个集合)它没有成员。这是一个明确的答案,与“没有关于这方面的数据”截然不同 在PHP世界中,显然未初始化的变量具有空值,并且在这样的变量上设置isset返回FALSE。 对于数组和字符串,PHP遵循“空”表示“没有成员”的约定,尽管从技术上讲数组和字符串不是集合Php 空和空之间有什么区别?,php,null,isset,Php,Null,Isset,我不熟悉空和空的概念。虽然我努力理解它们之间的区别,但我更困惑。我在上看到一篇文章,但我仍然不知道在验证表单时何时使用isset和empty。鉴于我没有理解其中的区别,我不想使用不正确的函数,也不想在其他领域使用这些函数。有人能举例帮助我理解吗?我对编码非常陌生,因此如果有人能给我提供真实世界的示例,同时让noob能够理解,我将不胜感激。Null是一个占位符,通常意味着“没有关于这方面的数据可用” 在这方面使用null只是一种约定,但却是一种相当普遍的约定,以至于有些编程语言直接支持该约定。这个
PHP显然有一个有趣的想法,即通过PHP设计,0和0.0也是“空的”。这是对“空”概念的滥用:单个数字不是集合,所以0不能合理地用“空”来表示。这只会导致晦涩难懂的编程,因为它违反了最小意外的原则。我相信PHP设计者会认为“零是空数字”是一种模糊的类比;但是,如果类比是模糊的,为什么还要费心去做呢?但是PHP充满了愚蠢的想法。如果变量没有值,并且指向内存中的任何地方,那么它就是
NULL
empty()
是empty的字面意思,例如字符串“
为空,但不是NULL
以下事项被认为是
空的:
- “”(空字符串)
- 0(0作为整数)
- 0.0(0作为浮点数)
- “0”(0作为字符串)
- 空的
- 假的
- array()(空数组)
- var$var;(已声明的变量,但类中没有值)
例子
$a
为NULL
$a=''
为空,但不是NULL
更新 如果
$a=''
为空但不为NULL
,则何时使用empty()
函数以及何时使用isset()
函数
如果变量指向NULL
,则返回FALSE
当您了解什么是空的时,请使用empty()
(查看上面的列表)
还有,当你说它在记忆中没有指向任何地方时,那到底是什么意思
这意味着$str='
将作为长度为0的字符串在内存中
如果它是
$str=NULL
,它将不会占用任何内存。自从我使用PHP以来已经有一段时间了,但是如果使用其他语言,空将表示没有内容的现有对象/映射/数组,而NULL将表示没有任何意义/定义的变量(未初始化)
在数据库SQL中,NULL表示“无值”。NULL是一个特殊值,它明确表示变量尚未设置为任何值。使用
empty()
函数时要小心,因为不能仅使用它来确定变量是否为空。例如,如果int设置为0,则empty()
函数将返回true。如果您需要确保变量完全为NULL
请使用If($variable==NULL)
有关empty()
的详细信息,请参见,empty()
是查看变量是否包含任何有用信息的一种快速方法。。。这对于字符串empty()
对于“”字符串和空字符串返回true
所以你可以这样写:
if (! empty($name)) echo $name;
更多信息请参见此处:isset()
如果满足以下两个条件,则返回true:
$a=array();
$a['randomKey']=true;
$a['nullKey']=null;
var_dump(isset($a['randomKey'])); // true
var_dump(isset($a['nullKey'])); // true, the key has been set, set to null!
var_dump(isset($a['unsetKey'])); // false !
unset($a['randomKey']);
var_dump(isset($a['randomKey'])); // false ! it's been unset!
从上面,您可以检查是否设置了各种$\u POST字段。例如,一个已经发布到的页面,在$\u POST字段中有提交按钮名称
empty()
另一方面,测试变量是否持有非零值。这意味着(int)转换为0的值也返回false。您可以使用它来查看特定的$\u POST字段中是否包含数据。这里有一些很好的答案,我将不再重复。但是,在验证表单的情况下,当提交表单时,每个表单输入元素的值都会在$\u POST
变量中发送到服务器。您可以使用isset()
检查特定输入是否存在
如果返回true,那么对服务器的请求是发布一个包含名为“username”的输入元素的表单的结果。现在我们知道表单元素有一个值,我们可以看看它是否有一个有效值empty()
将告诉我们用户是否在字段中实际输入了任何数据,或者是否将其留空
empty($_POST['username'])
如果返回true,则提交给服务器的表单有一个名为“username”的字段,但用户在提交表单之前没有输入任何内容
empty($_POST['username'])