PHPのarray_filter: 効率的なデータ処理の秘訣

この間、製造したタスクで電話番号を数える必要がありましたので、使用できる方法を調べました。その結果、array_filterを見つけました。それで、array_filterについてご紹介しようと思います。

1. array_filterとは?

array_filterはPHPの関数で、特定の条件に基づいて配列の要素をフィルタリング(抽出)することができるものです。簡単に言うと、不要な要素を取り除いて、自分の要件に合った要素だけを残すことができます。

array_filterがよく使われるケース:

  • 配列から偶数だけを抽出する。
  • nullfalse0、空文字列""などの「falsy」な値を除去する。
  • 複雑な条件に基づいて新しいリストを作成する。

2. array_filterの構文

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

  • $array: フィルタリングしたい配列。
  • $callback: フィルタ条件を定義する関数(必要であれば指定)。
  • $mode: 値、インデックス、またはその両方を確認するかを決定するパラメータ。

3. 実際の例

例えば、予約システムを作っているとしましょう。そこではお客様が最大3つの電話番号を提供できます。

  • $reservation['tel1']
  • $reservation['tel2']
  • $reservation['tel3']

ただし、お客様が全ての電話番号を提供するわけではありません。実際に入力された電話番号の数を数える必要があります。ここで便利なのがarray_filterです。以下のコードでその処理を簡潔に行うことができます。

$reservation = [– ‘tel1’ => ‘0123456789’,

‘tel2’ => null,

‘tel3’ => ‘0987654321’ ];

$telLines = count(array_filter([$reservation[‘tel1’], $reservation[‘tel2’], $reservation[‘tel3’]]));

echo “有効な電話番号の数: $telLines”;

結果: 有効な電話番号の数: 2

4. コードの解説

電話番号の配列を作成:

最初に、$reservation['tel1']$reservation['tel2']$reservation['tel3']の値を配列としてまとめます。

   array_filterを使用:
  • この関数は自動的に「falsy」な値(nullfalse0、空文字列など)を除外します。tel2の値がnullなので、それは除外されます。

残った要素をカウント:

  • count()を使って、フィルタリング後の配列の要素数を数えます。
  • 結果は2、つまりtel1tel3が有効な電話番号として残ります。

5. 実際のアプリケーション

array_filterは非常に便利で、実際の開発でよく使われます。例えば:

ユーザー入力から無効な値を除外する:
ユーザーが送信したフォームデータから不要な空白や無効な値を取り除くことができます。

データベースに保存する前にデータを処理:
データベースに保存する前に、不要なデータや不完全なデータをフィルタリングして、クリーンな状態で保存します。

複雑な条件でリストを処理:
array_filterを使うことで、複雑な条件でリストを簡単に処理でき、コードがシンプルで読みやすくなります。今回の例はその一部に過ぎませんが、array_filterを使うことで、より効率的で簡潔なコードを書くことができるようになります。