このコードが期待どおりに機能しないのはなぜですか? Test(&$array) 関数内で、ref パラメータをグローバル $array1 に設定しましたが、これは機能しませんでした。
$array1 = array();
$array2 = array();
function Test(&$array)
{
global $array1;
$array = &$array1;
$array['inside'] = 'inside';
}
//関数による設定:
Test($array2);
$array2['test1'] = 'test1';
var_dump($array1); //array('inside' => 'inside') ** WHERE IS THE 'test1' key? **
var_dump($array2); //array('test1' => 'test1') ** WHERE IS THE 'inside' key? **
//関数なしで設定:
$array2 = &$array1;
$array2['test2'] = 'test2';
var_dump($array1); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
var_dump($array2); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
編集:
$array を $array1 を指すように変更した場合、$array1 が関数の外側に 'inside' => 'inside' 値を持つことは明らかです。$array2['test1'] = 'test1' を設定した場合、この $array1 も変更しないのはなぜですか? 関数内の前に「リンク」されています!