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

この動作の理由は、JavaScript 関数のように PHP 関数をチェーンできないためです。同様document.getElementsByTagNames('a')[0]に可能です。

PHP バージョン < 5.4 では、2 番目のアプローチに固執する必要があります。

foo()[0] などの関数配列の逆参照が追加されました。

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

于 2012-08-11T05:42:35.623 に答える