如何使用PHP在数组中对重复的数组值进行分组?
我有一个像这样的数组
array[0]=203,
array[1]=204,
array[2]=204,
array[3]=203,
array[4]=203,
array[5]=205
我需要
之类的结果[203]=1,
[204]=2,
[203]=2,
[205]=1
我想要连续重复的数组值的计数
答案 0 :(得分:1)
期望输出的一个选择是创建一个索引数组,并在其下方建立关联数组。
这将创建这种数组:
array(4) {
[0]=>
array(1) {
[203]=>
int(1)
}
[1]=>
array(1) {
[204]=>
int(2)
}
[2]=>
array(1) {
[203]=>
int(2)
}
[3]=>
array(1) {
[205]=>
int(1)
}
}
这不是您想要的,但它是可能的。
代码循环并跟踪先前的值,如果相同,它将累加该值,否则创建一个新的索引值1的关联数组。
$array =[203,204,204,203,203,205];
$i=-1;
$prev = null;
$new=[];
foreach($array as $val){
if($val != $prev){
$i++;
}
if(!isset($new[$i][$val])){
$new[$i][$val] =1;
}else{
$new[$i][$val]++;
}
$prev = $val;
}
var_dump($new);
答案 1 :(得分:0)
array[0]=203;
array[1]=204;
array[2]=204;
array[3]=203;
array[4]=203;
array[5]=205;
$new_array = array();
foreach ($array as $key => $value) {
if(empty($new_array[$value])){
$new_array[$value] = 1;
}else{
$new_array[$value]++;
}
}
/*Now in the array $new_array you have the count of continuously repeating array values*/
答案 2 :(得分:0)
这可以使用php中的 array_count_value 函数在一行代码中完成。
$arr[0]=203;
$arr[1]=204;
$arr[2]=204;
$arr[3]=203;
$arr[4]=203;
$arr[5]=205;
$result = array_count_values( $arr );
var_dump( $result );
输出
array (size=3)
203 => int 3
204 => int 2
205 => int 1