[PHP]入れ子の連想配列の要素がある値である数をカウントする方法
入れ子になっている連想配列(多次元連想配列)の要素がある値の数をカウントする方法をメモ
例えば下記配列でそれぞれの連想配列のis_womanがfalseの数を取得したい場合
Array( [0] => Array( [name] => 田中 [age] => 25 [is_woman] => true ) [1] => Array( [name] => 樋口 [age] => 32 [is_woman] => false ) [2] => Array( [name] => 山本 [age] => 16 [is_woman] => true ) [3] => Array( [name] => 鈴木 [age] => 65 [is_woman] => false ) )
PHPのコードは以下のようになる
<?php function not_is_false($value) { return $value === false; } echo count(array_filter(array_column($array, 'is_woman'), 'not_is_false')); ?>
array_columnでis_womanだけを集めた配列を作成し、array_filterでnot_is_false関数の帰りがfalseであるものだけを更に絞り込み、countで数を数えている。