1

次のような配列があるとします。

array('a string', 23, array(array('key'=>'value'), 67, 'another string'), 'something else')

メイン配列のメンバーである配列を除いて、配列に含まれるの数を知りたいです。どのように?(期待される結果は6です)

foreach ループは、問題自体(配列の深さが不明) のため、適切ではありません。

これを実装する方法を知っている人はいますか?

4

2 に答える 2

6

array_walk_recursiveを使用できます。

$count = 0; 
array_walk_recursive($arr, function($var) use (&$count) { 
  $count++; 
}); 
echo $count; 

動作デモ。

于 2012-09-20T08:40:29.757 に答える
1

次の関数は、多次元であるかどうかに関係なく、指定された配列内のすべての非配列値の数を返します。

function countNonArrayValues(array $array)
{
    $count = 0;
    foreach ($array as $element) {
        $count += is_array($element) ? countNonArrayValues($element) : 1;
    }
    return $count;
}
于 2012-09-20T08:48:05.077 に答える