我有一个函数返回一个名为curPageURL的数组。在我的本地apache上,我像这样访问了Page的返回值:$pageUrl = explode('?',curPageURL())[0];
它工作得非常好。但在现场它没有用。我花了很多时间才弄明白,错误是访问数组。
这解决了这个问题:
$pageUrl = explode('?',curPageURL());
$pageURL = pageURL[0];
function curPageURL() {
$pageURL = 'http';
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
有人可以解释原因吗?
是否禁止直接通过函数的返回值访问数组索引?如果是这样,为什么在我的本地主机上工作,而不是在我的现场主持人?
答案 0 :(得分:4)
$pageUrl = explode('?',curPageURL())[0];
仅在 php版本> = 5.4
从PHP 5.4开始,可以对a的结果进行数组解除引用 函数或方法直接调用。之前它只能使用一个 临时变量。
您的在线主机低于该版本。
答案 1 :(得分:4)
在您拥有支持array dereferencing on function results的PHP 5.4之前,您需要current()
。
$pageUrl = current(explode('?',curPageURL()));