4

这可以在 JavaScript 中使用 isNAN 而不是 !isset 来完成。使用下面的示例 - 两种形式都发布到我的脚本中,一种没有值,一种有值。如果 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>
4

2 回答 2

6

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

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

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

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

于 2012-07-20T16:11:29.390 回答
1

它有效,但有一种更简洁的编写方式。

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

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

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

于 2012-07-20T16:12:30.010 回答