【问题标题】:Count How Many Times a Value Appears Php计算一个值出现多少次 PHP
【发布时间】:2020-12-06 05:12:47
【问题描述】:

我有一个 foreach,下面的代码返回给我你可以从屏幕截图 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>';
   
  } 

【问题讨论】:

  • $getMatches-&gt;participants 一个 laravel 集合对象吗?
  • 来自 api $getMatches = $api->getMatch($data->ids);
  • 你的意思是每个 $data->id 都是一个数组,因为你试图在 foreach 循环中使用 array_count_values

标签: php arrays laravel count logic


【解决方案1】:

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
)

【讨论】:

    【解决方案2】:

    你可能没有得到想要的结果,因为你在 foreach 循环中做所有事情

    让我们试试 Laravel 集合

    $items = collect([]);
    
    foreach ($getMatches->participants as $data) {
        $items->push($data->id);   
    }
    
    dd($items->countBy()->all());
    
    

    【讨论】:

    • 这对我有用,但是没有 dd 怎么打印?我可以回声吗?
    • 我不明白你想要达到的效果,你可以使用 dump() 而不是 dd ,这不会停止执行。
    • 我正在尝试在 html 表格中显示此内容
    • 为此,您可以遍历数组 @foreach($items as $key =&gt; $value)&lt;p&gt; {{ $key }} : {{ $value }}&lt;/p&gt;@endforeach
    【解决方案3】:

    如果$getMatches-&gt;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>';
    

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多