2011-06-09 77 views
2

我有一個PHP對象像下面和所有我想知道什麼的最簡單的方法來獲得對象的數量,其中財產「的typeid = 3PHP計數對象的屬性出現

Array 
(
    [0] => ABC Object 
     (
      [id] => 13 
      [typeId] => 3 
      [sortOrder] => 0 
     ) 
    [1] => ABC Object 
     (
      [id] => 12 
      [typeId] => 2 
      [sortOrder] => 0 
     ) 
    [2] => ABC Object 
     (
      [id] => 14 
      [typeId] => 4 
      [sortOrder] => 0 
     ) 
    [3] => ABC Object 
     (
      [id] => 15 
      [typeId] => 3 
      [sortOrder] => 0 
     ) 
) 

回答

3

簡單foreach計數器應該做的:

$count = 0; 
foreach ($array as $object) { 
    if ($object->typeId == 3) $count++; 
} 

沒有必要過分複雜的事情

+0

直線前進,我想我應該的花了更多的時間嘗試自己解決它。如此簡單,當你知道如何。謝謝=) – azzy81 2011-06-09 10:30:11

+2

blimey即時通訊看着這個我的老問題現在想知道如何在地球上我不知道如何做到這一點。我猜在過去的一年半中,我學到了很多東西,不能想象我問了這麼簡單的東西嘿 – azzy81 2013-04-11 15:35:37

+0

@SubstanceD我們都有這些時刻 – Petah 2013-04-11 23:22:42

0

只需創建一個名爲objectCount或類似的東西臨時變量,遍歷你的數組,當你發現一個typeId等於3的對象時,加1到objectCount

1

從我的角度來看,一個好得多的解決方案是使用array_filter功能:

$newarray = array_filter($old_array, function($object) { return $object->typeId == 3; }); 

(注:inline函數只因爲PHP 5.3工作)

+0

這比使用簡單的'foreach'循環慢很多_儘管 – Petah 2011-06-09 10:58:54

+0

它怎麼會慢?你有測量嗎? – smad 2011-06-09 11:11:20

+0

感謝您的回答,我確實使用了來自Petah的foreach循環,但我不知道內聯函數,所以我也學到了其他東西。不錯的一個=) – azzy81 2011-06-09 15:31:03