2011-07-21 51 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')); 

还有一些其他的is_*() -functions内置,可以帮助您例如计算字符串的数量(依此类推)。

要进行测试,如果一个元素是(例如)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'怎么样:我得到一个错误消息,说第二个参数应该长,字符串给定 - 你的'is_null'只是一个占位符? – pepe

+0

@torr:再次偶然发现我的圆括号...... http://xkcd.com/297/ – KingCrunch

1

通过它们循环并计数。

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