1

我在生日的 url 中有一个参数?user_birth_day=05,并且我有以下代码:

<?php echo $_REQUEST['user_birth_day']; ?> // this outputs 5

<?php for ($i = 1; $i <= 31; $i++) : ?>                     
    <?php if($_REQUEST['user_birth_day'] === $i){ echo 'BINGO'; } ?>
<?php endfor; ?>

if 语句根本不打印任何内容。请帮忙!

4

4 回答 4

5

这是因为您进行了严格的相等比较 ( ===),它也会检查类型,并且 in 中的值$_REQUEST是字符串,而不是数字。您可能需要使用==.

请记住,您从中获取的值GETPOST请求始终是字符串,因为 HTTP 没有任何附加类型的方法。我有时会看到将传入数据转换为适当的类型作为输入检查的一部分,例如,如果您希望字段包含数字,则检查它是否存在并将其转换为数字,否则中止。但可能有很多方法可以解决这个问题。

作为一种粗略的调试技术(如果您无法访问实际的调试器或者像我一样愚蠢并且无法让 xdebug 在 Eclipse 中正常工作),您可以使用print_r您想要检查的值,从而了解它们的类型(这本可以在这里告诉你为什么===不能工作)。

于 2012-10-09T05:07:19.103 回答
1

为什么你再次打开/关闭你的 php 括号?

就这样做,看看它是否有效

<?php 
 for ($i = 1; $i <= 31; $i++) {                     
   if($_REQUEST['user_birth_day'] == $i) { 
     echo 'BINGO'; 
   }
 }
?>
于 2012-10-09T05:07:42.757 回答
0
<?php echo $_REQUEST['user_birth_day']; ?> // this outputs 5

<?php for ($i = 1; $i <= 31; $i++) : ?>                     
    <?php if($_REQUEST['user_birth_day'] == $i){ echo 'BINGO'; } ?>
<?php endfor; ?>

并尝试一次可能有效

于 2012-10-09T05:07:27.607 回答
0

首先将 $_REQUEST['user_birth_day'] 存储在某个变量中并尝试比较它们。

$day = $_REQUEST['user_birth_day']

if($day === $i)
{ 
echo 'BINGO'; 
}
于 2012-10-09T05:10:07.390 回答