2011-07-21 16 views
1

私は、この配列は、私の見解PHPの配列/オブジェクト内の要素を数えるには?

Array 
(
    [0] => stdClass Object 
     (
      [emg_id] => 2 
      [fkit] => 1 
      [door] => 
     ) 

) 
私が空になっているどのように多くの要素カウントしたい

、NULL、または「0」に送信されています。

私はcountを使用しようとしましたが、すべての要素を数える代わりに、常に「1」を返します。

私が間違っていることは何ですか?

答えて

4
// number of "null" elements 
echo count(array_filter((array) $array[0], 'is_null')); 

。要素(例えば)0であれば、テストする

、私はそれ以外の場合は類似している

echo count(array_filter((array) $array[0], function ($item) { 
    return $item === 0; 
})); 

匿名関数を使用することを示唆しています。

+0

http://php.net/manual/en/function.count.phpで文書化されています – GreenMatt

+0

thx @kingcrunch - 最初の例では 'is_null'はどうですか:2番目のパラメータは次のようなエラーメッセージが表示されます。あなたの 'is_null'は単にプレースホルダですか? – pepe

+0

@torr:もう一度私のかっこに遭遇しました... http://xkcd.com/297/ – KingCrunch

1

これらをループしてカウントします。 (など)文字列の数をカウントするたとえば、あなたを助けるかもしれ内蔵のいくつかの他のis_*() -functionsがあります

function loopMe($array, $value) { 
    $num = 0; 
    foreach($array as $key=>$val) { 
     if($val == $value) 
     $num++; 
    } 
    return $num; 
} 


$ar = array (
    array (
     "emg_id" => 2 
     "fkit" => 1 
     "door" => null)); 
$num = loopMe($ar[0], null); 
+0

コードをクリーンアップし、構文エラーを削除してください。 – KingCrunch

+0

今、? –

+0

thx @senad ---- – pepe

関連する問題