[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で数を数えている。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です