PHP数组通过引用传递值

时间:2012-06-07 20:10:52

标签: php arrays reference

我有一小段代码用于测试array_walk测试。

我认为我可以使用foreach做同样的事情,但是当我传递值时它不会被修改:

<?php
$frutas = [ "d" => "limón", "a" => "naranja", "b" => "banana", "c" => "manzana" ];

function test_alter(&$elemento)
{
  $elemento = "prefijo: $elemento";
  echo "$elemento <br>";
}

foreach($frutas as $clave => $valor) {
  test_alter($valor, $clave);
}
print_r( $frutas ); 
?>

哪个输出:

prefijo: limón
prefijo: naranja
prefijo: banana
prefijo: manzana
Array ( [d] => limón [a] => naranja [b] => banana [c] => manzana ) 

显然不会修改数组值,尽管它是通过引用传递的。

1 个答案:

答案 0 :(得分:5)

您正在将$valor传递给函数... foreach值不是“引用”值,因此您正在更改临时值,而不是实际的数组值......

在你的foreach循环中尝试这个:

test_alter($frutas[$clave]);

或者,你可以:

foreach($frutas as $clave => &$valor){
    test_alter($valor, $clave);
}