PHP切换不用整数切换

时间:2015-07-03 12:23:15

标签: php switch-statement

我有一个HTML表单和一些PHP,但它总是回应" 100 TEST"无论提交的案例如何。默认情况正常。

HTML:

<form class="page-search" action="page.php" method="post">
     <input type="text" name="page" autofocus maxlength="3" placeholder="100" style="width: 50px;">
     <input type="submit" style="visibility: hidden;">
</form>

PHP:

<?php 
$pageid = isset($_POST['page']);

switch ($pageid) {

case '100':
echo '100 TEST';
break;

case '200':
echo '200 TEST';
break;

case '300':
echo '300 TEST';
break;

default: 
echo 'DEFAULT';
break;

}
?>

我错过了一些非常明显的东西吗?我因为需要提出这个问题而自责,但似乎无法解决这个问题!

3 个答案:

答案 0 :(得分:1)

更改

$pageid = isset($_POST['page']);

$pageid = isset($_POST['page']) ? $_POST['page'] : 'default value if you need one';

由于代码正在检查isset()方法的结果,该结果将是boolean,但switch$_POST['page']值本身感兴趣。

正如我在评论中提到的,这是示例代码的替代方法:

echo isset($_POST['page']) ? $_POST['page'] . ' TEST' : 'DEFAULT';

答案 1 :(得分:0)

isset如果var存在并且其值不是NULL,则返回TRUE,否则返回FALSE。

将您的代码更改为此

<?php 
if (isset($_POST['page'])) $pageid = $_POST['pageid'];

答案 2 :(得分:0)

isset将返回布尔值。所以这就是问题所在。

你没有关闭你关闭bracis for switch也是,isset被选中但是没有为变量$ pageid分配值

$pageid = isset($_POST['page']) ? $_POST['page'] : 0;

switch ($pageid) {

 case '100':
 echo '100 TEST';
 break;

 case '200':
 echo '200 TEST';
 break;

 case '300':
 echo '300 TEST';
 break;

 default: 
 echo 'DEFAULT';
 break;
}