Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dsk52/f113000b4ede52d89a7d456e7f4fd9ba to your computer and use it in GitHub Desktop.
Save dsk52/f113000b4ede52d89a7d456e7f4fd9ba to your computer and use it in GitHub Desktop.

以下の環境で確認

とある案件で、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));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment