这可以使用isNAN而不是!isset在Javascript中完成。 使用下面的示例 - 两个表单都发布到我的脚本,一个没有值,一个有值。如果post var不存在,以下代码是否在PHP中执行此操作以正确分配值?
$ mycheck =!isset($ _ POST ['value'])? 0:$ _POST ['value'];
<?
if($_POST) :
$mycheck = !isset($_POST['value']) ? 0 : $_POST['value'];
echo $mycheck;
endif;
?>
<!-- send value-->
<form action="" method="post">
<select name="value">
<option value="0">0</option>
<option value="5">5</option>
</select>
<input type="submit" name="submit">
</form>
<!-- doesn't send value-->
<form action="" method="post">
<input name="different_var">
<input type="submit" name="submit">
</form>
答案 0 :(得分:6)
是的,这是设置默认值的可接受方式。
在PHP 5.3中引入的另一种方法是省略三元表达式的中间参数:
$mycheck = $_POST['value'] ?: 0;
但是,如果未设置$_POST['value']
,这可能会引发尝试访问具有不存在密钥的数组的通知。因此,您的原始方法更容易被接受。
答案 1 :(得分:1)
它有效,但有一种更清晰的写作方式。
从PHP 5.3开始,您可以将三元操作缩短为两个表达式,如下所示:
$mycheck = $_POST['value'] ?: 0;
这基本上意味着你已经拥有的东西。