如果value设置为0,则PHP empty($ val)函数返回true

Gat*_*ura 2 php validation

我有以下PHP代码:

$required_fields = array ('menu_name','visible','position');
foreach($required_fields as $fieldname)
{
    if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) )
    {
        $errors [] = $fieldname;
    }
}
Run Code Online (Sandbox Code Playgroud)

menu_name,visible并且position是通过邮寄方式收到的变量.

当值为visible零时,它会在错误数组中创建一个条目.

当0被认为是"非空"时,检测变量是否为空的最佳方法是什么?

Jan*_*čič 8

从PHP的手册:

如果var具有非空和非零值,则empty()返回FALSE.

做这样的事情:

if ( !IsSet ( $_POST['field'] ) || Trim ( $_POST['field'] ) == '' )
Run Code Online (Sandbox Code Playgroud)

这将确保字段已设置且不包含空字符串

从本质上讲:它empty()不会导致你的问题IsSet()

  • 这不是一种品味.理论上它是错误的,因为函数不被称为. (2认同)