2

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 ) 

参照によって渡されますが、明らかに配列値を変更しません。

4

1 に答える 1

5

関数に渡し$valorています...foreach値は「参照」値ではないため、実際の配列値ではなく、一時的な値を変更しています...

foreachループでこれを試してください:

test_alter($frutas[$clave]);

または、次のことができます。

foreach($frutas as $clave => &$valor){
    test_alter($valor, $clave);
}
于 2012-06-07T20:16:27.233 に答える