PHP:什么是 empty() 的替代方法,其中字符串 "0"不被视为空?

标签 php

<分区>

Possible Duplicate:
Fixing the PHP empty function

在 PHP 中,empty() 是一个很棒的快捷方式,因为它允许您同时检查变量是否已定义且不为空。

如果您不希望“0”(作为字符串)被视为空,但您仍希望 false、null、0 和“”被视为空,您会使用什么?

也就是说,我只是想知道您是否有自己的快捷方式:

if (isset($myvariable) && $myvariable != "") ;// do something
if (isset($othervar  ) && $othervar   != "") ;// do something
if (isset($anothervar) && $anothervar != "") ;// do something
// and so on, and so on

我不认为我可以为此定义辅助函数,因为变量可能未定义(因此不能作为参数传递)。

最佳答案

这应该做你想做的:

function notempty($var) {
    return ($var==="0"||$var);
}

编辑:我猜表格只能在预览中使用,而不是在实际提交的答案中。所以请引用PHP type comparison tables了解更多信息。

notempty("")       : false
notempty(null)     : false
notempty(undefined): false
notempty(array())  : false
notempty(false)    : false
notempty(true)     : true
notempty(1)        : true
notempty(0)        : false
notempty(-1)       : true
notempty("1")      : true
notempty("0")      : true
notempty("php")    : true

基本上,对于除“0”之外的所有值,notempty() 与 !empty() 相同,它返回 true


编辑:如果您使用 error_reporting(E_ALL),您将无法按值将 undefined variable 传递给自定义函数。正如 mercator 指出的那样,您应该始终使用 E_ALL 以符合最佳实践。 This link (评论 #11)他讨论了为什么出于性能和可维护性/调试原因不应该使用任何形式的错误抑制。

请参阅 orlandu63 的回答,了解如何将参数传递给自定义函数 by reference .

关于PHP:什么是 empty() 的替代方法,其中字符串 "0"不被视为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732979/

相关文章:

每当项目运行时,php.ini 都会在本地被覆盖

php - mysql查询优化问题

php - 如何向 symfony2 中的未绑定(bind)表单字段添加验证

php - 有人可以解释如何在将 html 输入值写入 .txt 文件的 php 脚本之后重定向 url

php - JavaScript 表单验证事件

php - Paypal - 可以使用 web_accept 通过 RESTFUL API 退款

php - IPN 发布 : cannot receive post values from paypal

php - 使用php向上/向下移动MySQL行的位置

php - 如何在 jQuery 的页面之间保留从 PHP 登录检索到的数据

php - Guzzle 异步请求不是真正的异步?