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

时间:2015-04-26 14:54:45

标签: php arrays count

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

3 个答案:

答案 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
 )