为什么这个PHP if语句不起作用?

时间:2012-10-09 05:05:42

标签: php

我在生日?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 个答案:

答案 0 :(得分:5)

这是因为你进行了严格的相等比较(===),它也将检查类型,$_REQUEST中的值是一个字符串,而不是一个数字。您可能需要使用==来确保检查不那么严格。

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

作为一种粗略的调试技术(如果您无法访问实际的调试器或者像我一样愚蠢并且无法使xdebug在Eclipse中正常工作),您可以对所需的值使用print_r检查,从而也学习他们的类型(这可能告诉你为什么===无法工作)。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分: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; ?>

尝试一次可能有效

答案 3 :(得分:0)

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

$day = $_REQUEST['user_birth_day']

if($day === $i)
{ 
echo 'BINGO'; 
}