2022-05-18に投稿

PHP の array_filter() で条件に一致した配列の要素を抽出する

PHP で array.filter のようなことをしたくなったのでメモ。

コード

<?php

declare(strict_types=1);

function getEmployeeList(string $dept_name): array
{
    return array_values(
        array_filter(
            $employees,
            function($employee) use ($dept_name) {
                return $employee->getDeptName() === $dept_name;
            }
        )
    );
}

イメージとしてこのような感じで意図した挙動になることを確認しました。

やっていることととしては、「ある部署に所属する (部署名 $dept_name で抽出) 社員全員の一覧」を抽出しています。

なお、前提として社員データの配列 $employees (各要素が予め定義された Employeeオブジェクト) があるものとしています。

ところで、この形 Eloquent の複合条件抽出でも見かけました……そう、 array_filter() の第二引数(コールバック関数)がクロージャで、スコープを越えて外部変数を使うために use句 を用いる、という形がそっくりそのままですね。

デジャヴも良いところですね。

参考

arra_values()

array_filter()

Originally published at labor.ewigleere.net
ツイッターでシェア
みんなに共有、忘れないようにメモ

arm-band

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント