php访问数组的奇怪行为

时间:2013-04-29 07:30:20

标签: php arrays

我有一个函数返回一个名为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;
    }
  • 有人可以解释原因吗?

  • 是否禁止直接通过函数的返回值访问数组索引?如果是这样,为什么在我的本地主机上工作,而不是在我的现场主持人

2 个答案:

答案 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()));