php组重复的数组值

时间:2018-09-10 11:09:22

标签: php arrays

如何使用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

我想要连续重复的数组值的计数

3 个答案:

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

https://3v4l.org/W2adN

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