2015-02-09 103 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);