以下の環境で確認
- Vagrant(ScotchBox)
- PHP 5.6
とある案件で、JSONからデータ引っ張って、あるページはAの含まれているデータを使うって感じのことをした。
JSONを引っ張ってdecodeした段階で、情報は連想配列になるので、そこからどうやって絞り込むかでいい関数が無いか探した所、 array_filter
という関数を発見した。
参考: array_filter
第1引数に処理対象となる配列を、第2引数に検索する要素やコールバック関数を渡すことで絞込みができる。
今回は条件をページによって変えるという事がしたかったが、コールバック関数を用いたやり方で引数として外部から条件を渡す方法が分からなかった。 調べていると以下の記事が出てきた。
phpのarray_filterに引数を追加したい - QA@IT
どうやらクロージャー?絡みで上手く渡せなかったらしい。
記事内のパターン1の書き方みたく、関数の定義時に use ()
を付けることで渡すことができた。感謝!
$limit = 5;
$callback = function ($var) use ($limit) {
return ($var > $limit);
};
print_r(array_filter($array, $callback));