计算一个值出现的次数 Php

Count How Many Times a Value Appears Php

我有一个 foreach 和下面的代码 returns 给我你可以从屏幕截图 1

中看到的值 (int)
foreach ($getMatches->participants as $data) {

  $count = ($data->id);
  

  echo '<pre id="json">'; var_dump($count); echo '</pre>';
   
  }

所以,我想计算同一个值出现了多少次。 在这种情况下: 值 98:2 次;值120:3次等

我尝试将我的 $count 变量转换为数组并像下面的代码一样使用 array_count_values,但没有成功。正如您在屏幕截图 2 中看到的那样,值 98 仅返回 1 而不是 2,值 120 仅返回 1 而不是 3 等

  foreach ($getMatches->participants as $data) {

  $count = array($data->id);
  

  echo '<pre id="json">'; var_dump(array_count_values($count)); echo '</pre>';
   
  } 

array_count_values,享受:-)

$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
//basically we get the same array
foreach ($array as $data) {

  $count[] = $data;
}   
$vals = array_count_values($count);
print_r($vals);

结果:

Array
(
    [12] => 1
    [43] => 6
    [66] => 1
    [21] => 2
    [56] => 1
    [78] => 2
    [100] => 1
)

如果 $getMatches->participants 是一个对象数组,您应该首先对其进行循环和重复总和。

$count = [];
foreach ($getMatches->participants as $data)
{
    if (isset($count[$data->id]))
    {
        $count[$data->id] = $count[$data->id] + 1;
    }
    else
    {
        $count[$data->id] = 1;
    }
}

然后在其他循环中显示结果

echo '<pre id="json">';
foreach ($count as $key => $data)
{
    echo $key . ' repeated ' . $data . ' times'. PHP_EOL;
}
echo '</pre>';

您可能没有得到预期的结果,因为您在 foreach 循环中执行所有操作

让我们尝试使用 Laravel 个集合

$items = collect([]);

foreach ($getMatches->participants as $data) {
    $items->push($data->id);   
}

dd($items->countBy()->all());