[PHP-users 16084]Re: array_diffの結果

Shin MATAMURA matamura @ m-flats.co.jp
2003年 6月 20日 (金) 17:20:57 JST


マタ@MFと申します。

>マニュアルを見て、配列を3つにしたときは"blue"と"white"を結果として
>受け取れると思ったのですが考え方が違うのでしょうか?

とおっしゃられてるのは、

http://www.php.net/manual/ja/function.array-diff.php

の事ですよね?

---引用
array_diff() は、他の引数のいずれにも存在しな いarray1の値の全てを有する配列を返します。
キーと値の関係は維持されることに注意して下さい。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
---引用

後半部分の通りです。

$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$array3 = array ("b" => "green", "yellow", "white");

はつまり、

$array1 = array ("a" => "green", 0 => "red", 1 => "blue");
$array2 = array ("b" => "green", 0 => "yellow", 1 => "red");
$array3 = array ("b" => "green", 0 => "yellow", 1 => "white");

ですので、このケースは引用の後半に当てはまります。
「array_diff ($array1, $array2, $array3)」の結果が、
array(1 => "bule")
になるか、
array(1 => "white")
になるかについてマニュアルに記述はありませんけど、
処理してゆく順番は、右側の引数からのようですね。
結果の配列は、一旦は「array(1 => "white")」になったけれど、
「array(1 => "bule")」に上書きされちゃった、と。
そう言うことだと思います。

それでは、失礼します。


PHP-users メーリングリストの案内