-2

PHP 関数で、参照によって渡された配列に値を追加したいと思います。例えば:

function foo(array &$arr) {
    $arr[] = "error on this line";
    $arr[] = "more";
    $arr[] = "stuff";
}

配列に何かを追加しようとすると発生するエラーは

PHP Parse error:  syntax error, unexpected ']', expecting T_STRING or T_VARIABLE or T_NUM_STRING in somefile.class.php on line xxx

パラメータが正しく定義されているかどうか、またはこれが可能かどうかはわかりません。グーグルはこれまでのところ、比較可能な例を見つけていません。

編集: PHP バージョン 5.1.6。

4

3 に答える 3

2

コードを実行したところ、期待どおりの出力が得られたので、何が起こっているのかわかりません。が配列でない場合arrは、タイプヒントが渡されないため、間違いなく配列です。

PHP < 5.4 を実行している可能性があります

<?php

function foo(array &$arr) {
    $arr[] = "error on this line";
    $arr[] = "more";
    $arr[] = "stuff";
}

$a = ["initial"];

foo($a);

var_dump($a);

/*
array(4) {
  [0] =>
  string(7) "initial"
  [1] =>
  string(18) "error on this line"
  [2] =>
  string(4) "more"
  [3] =>
  string(5) "stuff"
}
*/

PHP < 5.4 の場合:

<?php

function foo(array &$arr) {
    array_push($arr, "error on this line");
    array_push($arr, "more");
    array_push($arr, "stuff");
}

$a = array("initial");

foo($a);

var_dump($a);

/*
array(4) {
  [0] =>
  string(7) "initial"
  [1] =>
  string(18) "error on this line"
  [2] =>
  string(4) "more"
  [3] =>
  string(5) "stuff"
}
*/
于 2015-08-04T20:43:59.490 に答える