2012-02-23 13 views
2

多次元配列の入れ子要素を数えようとしています。最初はCOUNT_RECURSIVEを使用できると思っていましたが、それはすべてを数えます。だから私は2つの異なるアプローチを試みましたが、どれも私にアピールしません。それを行うより良い方法はありますか?多次元配列の要素を数えますか?

$count = 0; 
foreach ($topics as $t) { 
    foreach ($t as $c) { 
    $count++; 
    } 
} 
echo $count; 

// or 

echo (count($topics, COUNT_RECURSIVE)-count($topics)); 
+0

ます2番目の方法は正しいと私が推薦する唯一の方法です。 –

+0

私は配列の要素に値を数えたいと思っていますが、それらの配列に配列のあるものは数えたくありませんか?また、*多次元*配列についても言及しています - 私たちは任意の次元を話していますか? –

+0

http://pastebin.com/RcV4EADdここに$ topics配列のprint_rがあります。両方のブロックが期待通りに '20'を返し、btwにする必要があります。 – nielsiano

答えて

2
function countNested($arr) { 
    return (count($arr, COUNT_RECURSIVE) - count($arr)); 
} 
0

私はこのコードを記述します。

$count = 0; 
foreach ($topics as $t) { 
    $count+= count($t); 
} 
echo $count; 
+0

なぜこのコードを書いていますか?それは何をするためのものか? – markus

+0

2次元配列の要素を数えると思います。私はCOUNT_RECURSIVEフォームが好きではありませんが、それは私にとっては直感的ではありません。 – Michas

0

//次の例では、あなたがあなた自身の質問に答えいずれか数える一次元または二次元配列

$values_count = (count($values, COUNT_RECURSIVE) - count($values)?:count($values));