Wor*_*ole 28 php string if-statement
if(isset($_POST['submit'])) {
if(!isset($_POST['userName'])) {
$username = 'Anonymous';
}
else $username = $_POST['userName'];
}
Run Code Online (Sandbox Code Playgroud)
我不能让它$username成为"匿名者"?它要么是空白,要么是值 $_POST['userName'].
Mic*_*ski 42
如果表单已成功提交,$_POST['userName']则应始终设置,但它可能包含空字符串,这与未设置完全不同.而是检查它是否是empty()
if (isset($_POST['submit'])) {
if (empty($_POST['userName'])) {
$username = 'Anonymous';
} else {
$username = $_POST['userName'];
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*ndy 41
isset()如果变量已初始化,则返回true.如果您的表单字段的name值设置为userName,则在提交该表单时,该值将始终为"set",尽管其中可能没有任何数据.
相反,trim()字符串并测试其长度
if("" == trim($_POST['userName'])){
$username = 'Anonymous';
}
Run Code Online (Sandbox Code Playgroud)
Gaj*_*jus 10
要检查房产是否存在,无论价值如何,请使用:
if (array_key_exists('userName', $_POST)) {}
Run Code Online (Sandbox Code Playgroud)
要检查属性是否已设置(属性是否存在且值不是null或false),请使用:
if (isset($_POST['userName'])) {}
Run Code Online (Sandbox Code Playgroud)
要检查属性是否已设置且不为空(不是空字符串,0(整数),0.0(浮点),'0'(字符串)null,false或[](空数组)),请使用:
if (!empty($_POST['userName'])) {}
Run Code Online (Sandbox Code Playgroud)
问题:检查 $_POST 值是否为空。
翻译:检查数组键/索引是否具有与其关联的值。
答:取决于您对安全的重视程度。取决于允许作为有效输入的内容。
1. Some people say use empty().
Run Code Online (Sandbox Code Playgroud)
来自 PHP 手册:
“[Empty] 确定一个变量是否被认为是空的。如果一个变量不存在或者它的值等于 FALSE,那么它被认为是空的。”
因此,以下内容被认为是空的。
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)
Run Code Online (Sandbox Code Playgroud)
如果这些值都不适用于您的输入控件,则empty()可以使用。这里的问题是它empty()可能太广泛而无法一致使用(同样的方式,出于同样的原因,在不同的输入控件提交给$_POST或$_GET)。一个很好的用途empty()是检查整个数组是否为空(没有元素)。
2. Some people say use isset().
Run Code Online (Sandbox Code Playgroud)
isset()(语言构造)不能对整个数组进行操作,如isset($myArray). 它只能对变量和数组元素进行操作(通过索引/键):isset($var)和isset($_POST['username'])。在isset()语言结构做了两两件事。首先,它检查变量或数组索引/键是否具有与其关联的值。其次,它会检查以确保该值不等于 PHP NULL 值。
简而言之,使用 可以最好地完成最准确的检查isset(),因为某些输入控件在未选中或未选中时甚至不会使用 $_POST 进行注册。我从来不知道提交 PHP NULL 值的表单。我的都没有,所以我isset()用来检查一个$_POST键是否没有与之关联的值(并且不是 NULL)。isset()是一种更严格的测试空虚的(在你的问题的意义上)比empty()。
3. Some people say just do if($var), if($myArray), or if($myArray['userName']) to determine emptiness.
Run Code Online (Sandbox Code Playgroud)
您可以在 if 语句中测试任何计算结果为true或false的内容。空数组的计算结果为 false,未设置的变量也是如此。包含 PHP NULL 值的变量也计算为 false。不幸的是,在这种情况下,就像 with 一样
empty(),还有更多的东西也会被评估为 false:1. 空字符串 ''、零 (0)、zero.zero (0.0)、字符串零 '0'、布尔值 false 和某些空的 XML对象。--Doyle,从 PHP 5.3 开始
总之,使用isset()并考虑将其与其他测试结合使用。例子:
由于超全局扭曲,可能无法正常工作,但毫无疑问适用于其他阵列。
if (is_array($_POST) && !empty($_POST)) {
// Now test for your successful controls in $_POST with isset()
}
Run Code Online (Sandbox Code Playgroud)
因此,为什么要在您确定$_POST表示一个数组并在其中存储任何值之前查找与键关联的值(许多人没有考虑到这一点)?请记住,人们可以在不使用 Web 浏览器的情况下向您的表单发送数据。您可能有一天会到达$_POST只有允许的密钥的测试点,但该对话将在另一天进行。
有用的参考: