【发布时间】:2012-12-11 17:52:09
【问题描述】:
我在 PHP 5.4.10 下运行的页面中有以下 sn-p(注意比较中的 ===)。
$list_all_pages = False;
$reqs_per_page = 50;
$start_page = 0;
if (isset($_GET["p"])) {
echo("Debug: " . $_GET["p"] . "\n");
if ($_GET["p"] === "all") {
$list_all_pages = True;
} else {
$start_page = intval($_GET["p"]);
if ($start_page < 1)
$start_page = 0;
}
}
参数“p”意为将显示的结果页数(从零开始)或“all”以显示所有页面。由于我不明白的原因,PHP 自动将我的参数转换为整数,结果我永远无法显示我希望的所有页面。
例如,使用“mypage.php?p=all”调用页面会导致调试回显打印“调试:0”
发生了什么事?我觉得这种自动转换有点危险……以前有人遇到过这个问题吗?
【问题讨论】:
-
你是通过 Wordpress 运行的吗?
-
@SamuelCook 你是说 WP 改变了超全局变量的值吗? :(如果是这样的话,它比我想象的还要糟糕:P
-
@SamuelCook 不,但我在同一台服务器上安装了 WP 并且启用了 APC。这种组合可以改变所有 Apache 进程共享的一些全局 PHP 状态吗?
标签: php pagination type-conversion superglobals type-coercion