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
句 を用いる、という形がそっくりそのままですね。
デジャヴも良いところですね。