14

我有一个返回数组的函数。我有另一个函数只返回第一行,但由于某种原因,它让我使用了一个中间变量,即失败:

function f1(/*some args*/) {
    return /*an array*/;
}
function f2(/*some args*/) {
    return f1(/*some args*/)[0];
}

. . . 和:

解析错误:语法错误,第 10 行的 util.php 中出现意外的“[”

但是,这有效:

function f1(/*some args*/) {
    return /*an array*/;
}
function f2(/*some args*/) {
    $temp = f1(/*some args*/);
    return $temp[0];
}

我无法在网上找到任何相关的内容(我的搜索一直被人们用“?”、“{”、“<”等混淆)。

我是自学 PHP 的 - 有什么原因我不能直接做我错过的吗?

4

2 回答 2

25

您不能使用函数数组取消引用

return f1(/*some args*/)[0];

直到PHP 5.4.0及更高版本。

于 2012-08-11T05:40:35.300 回答
2

这种行为的原因是 PHP 函数不能像 JavaScript 函数那样被链接。就像document.getElementsByTagNames('a')[0]是可能的。

对于 PHP 版本 < 5.4,您必须坚持第二种方法

添加了函数数组解引用,例如 foo()[0]。

http://php.net/manual/en/migration54.new-features.php

于 2012-08-11T05:42:35.623 回答