gpt4 book ai didi

PHP - 在 map 中调用函数后的奇怪行为

转载 作者:搜寻专家 更新时间:2023-10-31 21:38:01 25 4
gpt4 key购买 nike

在调用此 PHP 脚本时,我遇到了来自浏览器的非常奇怪的 react 。

<?php
$map = array(
'a' => function(){
print_r('a');
},

'b' => function(){
print_r('b');
}
);
$map($_GET['v']);
?>

我已经注意到那里有一个错误。调用的语法是错误的,应该是这样的:

$map[$_GET['v']]();

问题是浏览器对这个错误的 react 不是它应该的。

运行此脚本的结果是“连接已重置”消息。服务器正常启动并运行,其他 PHP 文件(以及更正错误后的这个文件)运行完美。

但是真正让我费解的是浏览器的导航栏是干什么的。当我打入网址时

localhost/cerdo.php?v=a

栏的内容变为

www.localhost.com/cerdo.php?v=a

www.localhost.com 部分似乎只出现在 Firefox 中。我在 Chromium 上尝试过,尽管显示了类似的消息(“未收到数据”),但 URL 保持不变。

发生了什么事?这有道理吗? PHP 不应该报告语法错误吗?为什么 Firefox 会重定向到 www.localhost.com?

最佳答案

PHP 不应该报告语法错误吗?

没有。如果 PHP 没有将 $map($_GET['v']); 报告为语法错误,是因为它期望代码在语法上有效。所以它最终会执行一些你意想不到的非常奇怪的东西。这会导致您的浏览器重定向到某个无法解释的位置。

这里的关键是理解 $map($_GET['v']); 的实际含义。

关于PHP - 在 map 中调用函数后的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com