どういうことか
$array = [
"a" => ["A", "B"]
"b" => ["C", "D"]
]
これの大文字のアルファベットの数のみがほしい。つまり4という結果がほしい。
どうするか
結論から言うと関数一発では出せない。
count
関数を使う
count($array);
// 結果 2
子要素の数しかカウントしてくれない。
したがって $array['a']
と $array['b']
で合計は2。
COUNT_RECURSIVE
を使う
count
関数の第2引数にCOUNT_RECURSIVE
を渡す。
count($array, COUNT_RECURSIVE);
// 結果 6
孫要素をカウントはしてくれるが子要素もカウントしてしまう。
なんとかする
たとえば
count($array, COUNT_RECURSIVE) - count($array);
// 結果 4
とか
$count = 0;
foreach($array as $values) {
$count += count($values);
}
// 結果 4
とか。
先輩エンジニアいわく
任意の構造があり得る中で孫要素だけ取り出すようなオプション作る意味があんまりない……
らしい。