2016-08-30 101 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

正好。但我也很欣赏你的建议..也许这也会奏效。谢谢 –

相关问题