[PHP] array_filterでnull値を飛ばしてインデックスがキーの連想配列を作る

ヨメレバCSS
オリジナルCSS

 小ネタですがちょっと面白いと思ったarray_filterの使い方。

スポンサーリンク
GoogleAdSence レクタングル(大)

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

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)