2015-02-09 102 views
0

我在PHP的一个完整的新手,但无论如何,这里有云:计数对象

我想下面的阵列中来算的["completed"]=> bool(true)量。

我能够通过这样做来计算总数:$totalCount = count($object->data);。我是否需要执行foreach()才能获得completed的数量,或者我可以通过做一些count()来解决这个问题?

谢谢!

object(stdClass)#2 (1) { 
    ["data"]=> 
    array(232) { 
    [0]=> 
    object(stdClass)#3 (2) { 
     ["id"]=> 
     int(13081073106396) 
     ["completed"]=> 
     bool(true) 
    } 
    [1]=> 
    object(stdClass)#4 (2) { 
     ["id"]=> 
     int(13160080793822) 
     ["completed"]=> 
     bool(false) 
    } 
+0

貌似这已经回答了: [http://stackoverflow.com/questions/6291027/php-count-object-property-occurrences ] [1] [1]:http://stackoverflow.com/questions/6291027/php-count-object-property-occurrences – gratz 2015-02-09 11:34:44

+0

您可以使用@gratz指的答案,只记得用来引用对象属性''>'运算符,所以它是'$ obj-> data'而不是'$ obj ['data']'因为你正在处理对象而不是数组。 – EJTH 2015-02-09 11:37:32

回答

0

我觉得这样的事情可能的工作:

var $count = 0; 
foreach($stdClass->data as $obj) 
    if($obj->completed) 
     $count++; 
0

考虑$ oObject是你的对象

$array = json_decode(json_encode($oObject),true); 

然后应用简单的数组数像

echo count($array); 

它将返回dat的总数一个。希望这会有所帮助!

0

使用一个回调来算:

$countCompleted = 0; 

array_map(function ($n) use $countCompleted { 
    if ($n->completed === true) 
     $countCompleted ++; 
}, $objectMap->data);