0

多年来,我一直使用这种方法来测试 $_POST var 并同时为 $var 赋值。

今天我遇到了一个服务器,它的处理方式似乎有所不同。

我正在加载页面 http://site.com/foo.php?var=bar 没有发布表单...并且测试 $_POST var 似乎取消了我的初始分配

$var= $_GET['var'];

echo "var is $var\n";  // correctly echos $_GET['var'] 

if ($var= $_POST['foo']) {
    echo "POST foo seen\n";  // does not fire, condition not met
}

echo "var is $var\n";  // does not echo $_GET['var'] 

当我切换到

if (isset($_POST['foo'])) {
    $var = $_POST['foo'];
...

我摆脱了令人不安的行为。

所以我的问题是这是否if ($var= $_POST['foo']) {是不好的形式?

4

2 回答 2

1

您使用的是赋值运算符=i 而不是比较运算符==。另外,请注意 PHPE_STRICT在访问未定义的数组元素时会抛出警告。因此,最好的选择通常是:

$name = trim(isset($_POST['name']) ? $_POST['name'] : '');

或对于整数:

$age = intval(isset($_POST['age']) ? $_POST['age'] : '');

于 2012-05-10T19:47:14.763 回答
0

尝试

$var = isset ( $_GET ['var'] ) ? $_GET ['var'] : null;
$foo = isset ( $_GET ['foo'] ) ? $_GET ['foo'] : null;

echo "var is $var\n"; // correctly echos $_GET['var']

if ($var === $foo) {
    echo "POST foo seen\n"; // does not fire, condition not met
}

echo "var is $var\n"; //
于 2012-05-10T19:47:41.037 回答