次のような配列があるとします。
array('a string', 23, array(array('key'=>'value'), 67, 'another string'), 'something else')
メイン配列のメンバーである配列を除いて、配列に含まれる値の数を知りたいです。どのように?(期待される結果は6です)
foreach ループは、問題自体(配列の深さが不明) のため、適切ではありません。
これを実装する方法を知っている人はいますか?
array_walk_recursiveを使用できます。
$count = 0;
array_walk_recursive($arr, function($var) use (&$count) {
$count++;
});
echo $count;
次の関数は、多次元であるかどうかに関係なく、指定された配列内のすべての非配列値の数を返します。
function countNonArrayValues(array $array)
{
$count = 0;
foreach ($array as $element) {
$count += is_array($element) ? countNonArrayValues($element) : 1;
}
return $count;
}