计算一个值在一个数组中出现的次数,该数组在另一个值下分组(年)

我有一个数组,里面有一些信息。

有两个重要的键datumanswer

我想查看密钥answer每年对值进行fout分组的次数(datum包含年份,因此在此数组中有两年2019和2020)


我如何看待2019年和2020年fout发生多少次datum?


因此,例如,我看到以下内容:


2019 - 5 times fout

2020 - 0 times fout

我试图在创建数组的循环中进行计数,但由于某种原因,它总是返回0。


这是我之前尝试过的(开始):


while($getwpi = $getwpicon->fetch_assoc()){

  $year = date('Y', strtotime($getwpi['datum']));

  $getwpi['datum'] = $year; // update your field

  $wpi[] = $getwpi; // add to the result array

  $counted = count($wpi['datum']);

}

但$counted返回0。


这是我目前的循环:


while($getwpi = $getwpicon->fetch_assoc()){

  $year = date('Y', strtotime($getwpi['datum']));

  $getwpi['datum'] = $year; // update your field

  $wpi[] = $getwpi; // add to the result array

}


MMTTMM
浏览 147回答 3
3回答

守候你守候我

您可以在循环内添加计数:while($getwpi = $getwpicon->fetch_assoc()){  $year = date('Y', strtotime($getwpi['datum']));  $getwpi['datum'] = $year; // update your field  if ($getwpi['answer'] == "fout") {      $res[$year] = isset($res[$year]) ? $res[$year] + 1 : 1;  }  $wpi[] = $getwpi; // add to the result array}现在,$res将使用每年计数的数组。您可以在其上循环打印所需的内容。

互换的青春

您可以使用array_walk和array_key_exists来解决这个问题$res=[];array_walk($arr, function($v, $k) use (&$res){//$arr is the main array&nbsp; $res[$v['datum']] = (array_key_exists($v['datum'],$res) && !empty($v['answer'])) ? ($res[$v['datum']]+=1) : 1;});echo '<pre>';print_r($res);输出示例:Array(&nbsp; [2019] => 4)
打开App,查看更多内容
随时随地看视频慕课网APP