PHP访问数组时出现奇怪的行为

6

我有一个返回数组的函数,叫做curPageURL。在我的本地apache上,我可以像这样访问页面的返回值:$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;
    }
  • 有人能解释一下为什么吗?

  • 直接通过函数返回值访问数组索引是否被禁止了?如果是,为什么在我的本地主机上可以工作,但在我的线上主机上不行呢?


它应该在5.4中工作。 - Ja͢ck
是的,我的主机使用的是 PHP 5.3 - 这就解释了一切,浪费了一小时的时间 :/ 谢谢。 - Karl Adler
2个回答

4

4

$pageUrl = explode('?',curPageURL())[0]; 仅在php版本 >= 5.4时可用。

从PHP 5.4开始,可以直接数组解引用函数或方法调用的结果。以前只能使用临时变量。

您的在线主机低于这个版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接