Jor*_*eFG 2 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 );
?>
Run Code Online (Sandbox Code Playgroud)
哪个输出:
prefijo: limón
prefijo: naranja
prefijo: banana
prefijo: manzana
Array ( [d] => limón [a] => naranja [b] => banana [c] => manzana )
Run Code Online (Sandbox Code Playgroud)
显然不会修改数组值,尽管它通过引用传递.
您正在传递$valor给函数... foreach值不是'引用'值,因此您正在更改临时值,而不是实际的数组值...
在你的foreach循环中尝试这个:
test_alter($frutas[$clave]);
Run Code Online (Sandbox Code Playgroud)
或者,你可以:
foreach($frutas as $clave => &$valor){
test_alter($valor, $clave);
}
Run Code Online (Sandbox Code Playgroud)