-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 回答
1

您可以使用 array_push

//The argument '$arr' is declared to be passed by reference, 
 array_push($arr, &$r); 

您可以在此处查看详细信息:http: //php.net/manual/en/language.references.pass.php

于 2015-08-04T20:41:02.950 回答
0

不需要在参数之前使用“array”关键字。以下代码适用于我:

$arr = array();

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

foo($arr);

print_r($arr);

输出:

Array ( [0] => error on this line [1] => more [2] => stuff )

编辑:PHP 版本是 5.6

于 2015-08-04T20:40:38.503 回答