[PHP-users 13915] array_map関数に参照渡しの関数を適用するときの挙動について

N.Yoshioka php-users@php.gr.jp
Wed, 12 Mar 2003 21:58:06 +0900


こんにちは、吉岡といいます。
お世話になります。

array_map関数について、どなたか教えていただけないでしょうか?

<?php
function abc(&$aa) {
 $aa = 2;
}

$a = array(1,2,3,4,5);
$b = $a;
$c = $b;
$d = $c;

array_map("abc", $d);
print_r($a);
print_r($b);
print_r($c);
print_r($d);
?>

上記のようなソースを実行すると、配列 $a のコピーをとっているにもかかわらず、
すべての変数が書き換えられてしまいます。($a $b $c $d すべて2になってしまう
!)
同様の関数のarray_walkを使用するとこの現象は起こりません。
これはarray_map関数の仕様なのでしょうか?
array_map関数に適用する関数は参照渡しを使用してはいけないのでしょうか?

環境は、Windows XP Home & php4.3.0 & apache1.3.27 です。
よろしくお願いします。