6

我有一个返回数组的函数,称为 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;
    }
  • 谁能解释为什么?

  • 是否禁止通过函数的返回值直接访问数组索引?如果是这样,为什么它在我的本地主机上有效,但在我的实时主机上无效

4

2 回答 2

4

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

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

您的在线主机低于该版本。

于 2013-04-29T07:32:19.490 回答
4

current()在您拥有支持对函数结果进行数组取消引用的PHP 5.4 之前,您将需要。

$pageUrl = current(explode('?',curPageURL()));
于 2013-04-29T07:33:09.933 回答