我正在为ZCPE学习,StudyGuide中的下一句话是:
passing an array in as a function argument, unless you
pass-by-reference using the & operator, a copy is passed and the internal pointer is
always set to the first position, making a call to reset() unnecessary
所以我做了一个测试:
function test($arr) {
echo current($arr);
}
$arr = array('a','b','c');
next($arr); next($arr);
test($arr);
test()
函数中的输出是c
,这意味着数组参数以副本的形式发送,但内部指针从全局空间克隆到与数组相同的位置。
该文档适用于PHP5.3,但我在PHP Manual
中找不到这样的更改。
也许是一个错误,但我不确定,因为我在手册中没有找到关于在将数组参数传递给函数时如何维护指针的信息。
如有此问题的任何信息,我们将不胜感激。
您可以选择通过引用或复制传递参数,例如:
示例1
function fn($a) {
// some job
}
$a = 5;
fn(&$a); // i choose to pass variable a by referance, instead of my declaration
示例2
function fn(&$a) {
// some job
}
fn($a); // will be passed by referance, whatever i do ...
fb(&$a) ; // also by referance : WARNING this has been removed from the new version of PHP !
在php的官方文档中,他们提到next()
的参数将由引用自动传递:
mixed next ( array &$array )
因此它不是一个bug:)
希望对有所帮助