概要
1.以下のときに"a"のキーだけを返したい
["a"=>"ringo", "b"=>null, "c"=>null, "d"=>false]
2.array_filter()を使う
配列で、特定条件のものを削りたい
["a"=>"ringo", "b"=>null, "c"=>null, "d"=>false];
こんなときに、"a"のキーのものを取り出したい。
nullとか、falseとか、想定外のものを削りたいとかよくありますよね。
array_filter
$array = ["a"=>"ringo", "b"=>null, "c"=>null, "d"=>false];
return array_filter($array)
これでよし。値がPHPの型変換でfalseになるものは全部削られる。0とかも削られる。
逆に言うと、trueになるものだけ残る。
となると、こういうこともしたくなる。
削るものを指定したい
削るものを指定したい。これも同じくarray_filterを使うことが出来る。
むしろ、それが本来の役割。第二引数に関数を指定するといい。
$array = ["a"=>"ringo", "b"=>null, "c"=>null, "d"=>false];
// ["a"=>"ringo", "d"=>false]
return array_filter($array, function ($value, $key) {
return !is_null($value);
});
これで、nullはfalseになるので除外される。結果、trueになる"a"と"d"のキーのものだけが残った配列が返ってくる。
公式ドキュメント
PHP: array_filter - Manual