计算一个值出现的次数Php [duplicate]

bfnvny8b  于 2023-05-27  发布在  PHP
关注(0)|答案(4)|浏览(120)

此问题已在此处有答案

Count and display occurrences of unique values in an array(15个回答)
3天前关闭。
我有一个foreach,下面的代码返回给我的值(int),您可以从屏幕截图1中看到

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>';
   
  }

u4dcyp6a

u4dcyp6a1#

array_count_values,enjoy:-)

$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
)
tzcvj98z

tzcvj98z2#

您可能没有得到所需的结果,因为您正在foreach循环中执行所有操作
让我们试试Laravel集合

$items = collect([]);

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

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

izkcnapc3#

如果$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>';
7fhtutme

7fhtutme4#

array_count_values完全按照您的需要执行,不需要另一个循环。

$array = [25,943,943,21,9,25,943,1,2,4];
$counts = array_count_values($array);

结果是:

[
   25 => 2,
   943 => 3,
   21 => 1,
   9 => 1,
   1 => 1,
   2 => 1,
   4 => 1,
]

相关问题