PHPの配列で空白の要素を削除するarray_filterの使い方

PHPで配列を扱っているとき、値の無い空白の要素を削除したい場面はありませんか?

そんなときは array_filter() を使うと便利です。

array_filter()は「空の要素を削除する関数」ではなく、「配列をフィルタリングして特定の要素を抜き出す関数」です。

なので今回の趣旨を超えているのですが、今回は空の要素を削除する方法をご紹介します。

PHPの配列で空白の要素を削除するarray_filterの使い方

$ary1には空文字やnullだけでなく、falseや0の配列も含まれています。

これを単純にarray_filter()の引数にセットして、戻り値を出力してみましょう。

結果は地名が入力された要素だけ残りました。

インデックスは元々のままのようです。

インデックスを詰めたい場合は、次の記事を参考にしてください。

≫ PHPの配列の特定要素を削除するunset()を使う場合の注意点

 

そして、0やfalseといった値も全て削除されるようですね。

if文で判定したときにfalseになるものは全て削除され、trueのものだけが残るんですね。

次のコードと同じ処理をするイメージです。

 

0やfalseも含めて削除したい場合は、単純に引数に配列をセットするだけでよさそうです。

 

「0やfalseは残したい」って方は foreach を使ったサンプルコードのif文の条件を空文字とnullにする方法でもできます(笑)

それだとnullだけ削除したり、0だけ削除したりできます。

ぶっちゃけ僕は想定通りに動けばOK派なのでそれでもいいですが、せっかくなのでarray_filter()を使った方法を次に説明します。

nullと空文字だけを削除する方法

まずnullだけを削除する方法です。

array_filter()の第2引数にフィルターとなる関数名を書きます。

そして、指定したフィルターは普通に関数を作成して定義しておきます。

作成した関数の引数には配列の値が1つずつ渡されます。

戻り値はboolean型で削除したいものが false になるように定義します。

 

配列の値が false のものが消えちゃうのでvar_dump()で出力します。

結果は次の通りです。

nullの要素だけが削除されました!

nullだけじゃなく、空文字も削除したい場合は次のように書きます。

結果は次の通りです。

これでnullと空文字が削除できます。

まとめ

参考になりましたでしょうか?

プログラマーとして初心者のarray_filter()を知らない頃はforeachを使って判定しながら新しい配列を作成してもいいと思います。

array_filter()を知ったらこれを使いましょう!

コードがすっきりしますし、PHPで用意されている関数なので他人がコードを見たときに一発で何をやっているか理解してくれます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA