我在学生数组上运行一个foreach循环,它有一个键['all_user_grades']。计算阵列中每个学生的As,Bs,Cs,Ds,Es数和失败次数的最佳方法是什么。
这是我的数组的样子:
[11] => Array
(
[id] => 10
[All_User_Grades] => A, A, D, A, E
)
到目前为止,这是我的foreach的样子:
foreach($user_grades as $k => $v){
$aug = $v['All_User_Grades'];
$all_user_grades_arr = explode(',', $aug);
}
答案 0 :(得分:2)
您可以使用array_count_values()
功能:
$array = array('A', 'A', 'D', 'A', 'E');
$result = array_count_values($array);
print_r($result);
输出:
Array
(
[A] => 3
[D] => 1
[E] => 1
)
答案 1 :(得分:0)
您可以像这样使用substr_count()
$As = substr_count($aug, 'A');
$Bs = substr_count($aug, 'B');
//etc
或者,就像你已经做的那样,爆炸并使用数组进行计算
$all_user_grades_arr = explode(',', $aug);
$grades = array('A' => 0, 'B' => 0', ...);
foreach ($all_user_grades_arr as $val) {
$grades[ trim($val) ]++;
}
trim()
这里有必要摆脱不必要的空白
答案 2 :(得分:0)
您可以使用array_count_values尝试这种方式,我已经用于单个阵列,您可以根据自己的要求进行更改。请参阅演示http://ideone.com/YrGfPD
//PHP
$v=array('Id'=>10,'All_User_Grades'=>'A,A,D,A,E');
$aug = $v['All_User_Grades'];
$all_user_grades_arr = explode(',', $aug);
echo '<pre>';
print_r(array_count_values($all_user_grades_arr));
echo '</pre>';
//OUTPUT
Success time: 0.02 memory: 24448 signal:0
Array
(
[A] => 3
[D] => 1
[E] => 1
)