小ネタですがちょっと面白いと思ったarray_filterの使い方。
スポンサーリンク
nullを飛ばしてインデックスをキーにした連想配列を作る
次のようなコードがあるとするじゃろ?
<?php $arr = [1, 2, 3, null, 5, 6, null, 8]; print_r(array_filter($arr));
こうじゃ!
Array
(
[0] => 1
[1] => 2
[2] => 3
[4] => 5
[5] => 6
[7] => 8
)
おわかりいただけるだろうか。
null値が消えて、配列のインデックスをキーとした連想配列になっています。
これがarray_filterでのPHPの判定による除去なら、falseや0や空白はどうなるかなと試してみたのがこちら。
$arr = [1, 2, 3, null, 5, 6, null, 8, false, 10, 0, 12, '', 14]; print_r(array_filter($arr));
実行するとこうなります。
Array
(
[0] => 1
[1] => 2
[2] => 3
[4] => 5
[5] => 6
[7] => 8
[9] => 10
[11] => 12
[13] => 14
)
falseも0も空白も消えていますね。
array_filterを通しただけでnull除去をしているコードを見て、面白い使い方するなーと思った次第でした。
実は公式ドキュメントの「例2 callback がない array_filter()」に書いてあったりするので、PHPドキュメントの充実ぶりを再確認したりもしています。
参考: array_filter