PHP switch 不与整数切换

PHP switch not switching with integer

我有一个 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;

}
?>

我是不是漏掉了一些很明显的东西?我很自责,因为我需要问这个问题,但似乎无法弄清楚这个问题!

isset Returns 如果 var 存在且值不是 NULL,则为 TRUE,否则为 FALSE。

将您的代码更改为此

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

改变

$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';

isset 将 return 布尔值。所以这里就成了问题。

你没有关闭你也关闭了开关的 bracis,检查了 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;
}