この間、製造したタスクで電話番号を数える必要がありましたので、使用できる方法を調べました。その結果、array_filterを見つけました。それで、array_filterについてご紹介しようと思います。
1. array_filterとは?
array_filter
はPHPの関数で、特定の条件に基づいて配列の要素をフィルタリング(抽出)することができるものです。簡単に言うと、不要な要素を取り除いて、自分の要件に合った要素だけを残すことができます。
array_filter
がよく使われるケース:
- 配列から偶数だけを抽出する。
null
やfalse
、0
、空文字列""
などの「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」な値(
null
、false
、0
、空文字列など)を除外します。tel2
の値がnull
なので、それは除外されます。
残った要素をカウント:
count()
を使って、フィルタリング後の配列の要素数を数えます。
- 結果は2、つまり
tel1
とtel3
が有効な電話番号として残ります。
5. 実際のアプリケーション
array_filter
は非常に便利で、実際の開発でよく使われます。例えば:
ユーザー入力から無効な値を除外する:
ユーザーが送信したフォームデータから不要な空白や無効な値を取り除くことができます。
データベースに保存する前にデータを処理:
データベースに保存する前に、不要なデータや不完全なデータをフィルタリングして、クリーンな状態で保存します。
複雑な条件でリストを処理:
array_filter
を使うことで、複雑な条件でリストを簡単に処理でき、コードがシンプルで読みやすくなります。今回の例はその一部に過ぎませんが、array_filter
を使うことで、より効率的で簡潔なコードを書くことができるようになります。