PHP - 计算数组中事物数量的最佳方法

PHP - Best way to count the number of things in array

我是 运行 一个学生数组的 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);
}

您可以使用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
)

你可以像这样使用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()是去掉不必要的空格所必需的

您可以使用 array_count_values, i have used for single array, you change as per your requirements. See Demo 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
 )