array_diffの挙動
Symfonyの実装を読んでいて気になったので調査。
ドキュメントによると、
PHP: array_diff - Manual
array array_diff ( array $array1 , array $array2 [, array $... ] )
- array1 を array2 と比較し、その差を返します。
ということらしい。
「差」ってなんだよ!
ということで調べた。
<?php $test1_arr = array('red','blue','green'); $test2_arr = array('red','blue'); var_dump(array_diff($test1_arr,$test2_arr));
$ php test.php
array(1) {
[2] =>
string(5) "green"
}
ふむふむ。確かに差が出力されている。
ではこれは?
<?php $test1_arr = array('red','blue','green'); $test2_arr = array('red','blue','green','yellow'); var_dump(array_diff($test1_arr,$test2_arr));
yellowが出力されると思うだろ?
$ php test.php array(0) { }
!?
はい。
php先生にはいつも驚かされます。
ということで、
array array_diff ( array $array1 , array $array2 [, array $... ] )
- array1とarray2を比較し、array1に入っているがarray2には入っていない要素を配列で返す
という意味のようです。