2016-08-30 35 views
0
$players = array(
         array('Lionel Messi', 'Luis Suarez', 'Neymar Jr'), 
         array('Ivan Rakitic', 'Andres Iniesta', 'Sergio Busquets'), 
         array('Gerrard Pique', 'Mascherano', 'Denis Suarez', 'Jordi Alba'), 
         array('MATS'), 
         array('Arda Turan', 'Munir El Hadadi', 'Umtiti') 
         ); 

現在我試圖回顯此數組$ player中的所有元素的數量。例如,第一個有3個元素,第二個有3個。第三個有四個元素,第四個有一個元素,最後一個有三個元素。這些元素共有14個元素。現在我想要顯示'Total Players:14'。我可以使用count()函數顯示類別數量(5),但不能計算總元素數量(14)。我嘗試了不同的方法,但不能成功。如何計算這整個php數組的所有元素?

回答

2

本機count()方法可以做到這一點的。

$count = count($players, COUNT_RECURSIVE) - count($players); 

因爲遞歸count也算你有$player組的數量,你必須從遞歸數減去這個數字。

從PHP documentationcount

如果可選模式參數設置爲COUNT_RECURSIVE(或1),COUNT()將遞歸計數陣列。這對計算多維數組的所有元素特別有用。

+0

我很感謝你的回答。但我在這裏遇到了另一個問題。 –

+0

我已經將每個數組的類別分類爲類別1,類別2,類別3,類別4和類別5.現在,COUNT_RECURSIVE也計算了這5個類別。給出19而不是14的結果。 –

+0

您可以「計數」類別數量並從「19」中減去該數字。或者,您可以通過您的實際玩家(而不是類別)「foreach」並獲得每個玩家的總數,而不是使用遞歸計數。由你決定。 – Johnny

1

聲明一個初始化爲0的變量來累加元素的數量。然後,迭代第一個數組(包含其他數組),對於每個元素(也是一個數組),使用count()來獲取元素數並將該值添加到累加器變量。

$num_players = 0; 

foreach($players as $row) { 
    $num_players += count($row); 
} 
3

count()應該可以爲您直接做到這一點,利用COUNT_RECURSIVE標誌:

$playerCount = count($players, COUNT_RECURSIVE) - count($players); 
// $playerCount is now equal to 14 

正常計數的減法是因爲遞歸計數增加外陣的鑰匙到元素的總和,只需要從遞歸計數中減去。

+0

哇人。你是個天才。有效!非常感謝! –

+0

@ProgrammingGeek np,很高興幫助。 –

+0

'-count($ players)'是實際的東西!我需要那個。你搖滾。再次感謝! –

2

的一種方式,不言自明:

$count = array_sum(array_map('count', $players)); 
+0

$ playerCount = count($ players,COUNT_RECURSIVE) - count($ players);這是工作代碼!它完美的作品。 –

+0

是的,這當然有用。但是與許多事情一樣,有不止一種方法可以做到這一點。 –

+0

正好。但我也很欣賞你的建議..也許這也會奏效。謝謝 –