PHP:检查发布变量是否存在或分配空值

时间:2012-07-20 16:10:45

标签: php conditional-operator

这可以使用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>

2 个答案:

答案 0 :(得分:6)

是的,这是设置默认值的可接受方式。

在PHP 5.3中引入的另一种方法是省略三元表达式的中间参数:

$mycheck = $_POST['value'] ?: 0;

但是,如果未设置$_POST['value'],这可能会引发尝试访问具有不存在密钥的数组的通知。因此,您的原始方法更容易被接受。

答案 1 :(得分:1)

它有效,但有一种更清晰的写作方式。

从PHP 5.3开始,您可以将三元操作缩短为两个表达式,如下所示:

$mycheck = $_POST['value'] ?: 0;

这基本上意味着你已经拥有的东西。