我想要现有数组中的新数组,键作为旧数组的重复值,值作为重复计数?

I want new array from existing array with key as repeated value from old array and value as repeated count?

我的旧阵列

array:7 [
  0 => "22-Feb-2017"
  1 => "22-Feb-2017"
  2 => "22-Feb-2017"
  3 => "27-May-2015"
  4 => "10-May-2015"
  5 => "10-May-2015"
  6 => "08-May-2015"
]

我想要新数组作为

array:7 [
  22-Feb-2017 => "3"
  27-May-2015 => "1"
  10-May-2015 => "2"
  08-May-2015 => "1"
]

不确定您是否正在寻找这样的东西

http://php.net/manual/en/function.array-count-values.php

请检查以下输出:

 $a=array(0 => "22-Feb-2017",
    1 => "22-Feb-2017",
    2 => "22-Feb-2017",
    3 => "27-May-2015",
    4 => "10-May-2015",
    5 => "10-May-2015",
    6 => "08-May-2015");

    ///array_count_values counts the same values count////
    $new_array = array_count_values($a);
/// now let's interchange the keys and values////
    foreach($new_array as $key=>$value){
        $out[$value] = $key;
    }

    print_r($out);

一种解决方法:

$dates = [
    0 => "22-Feb-2017",
    1 => "22-Feb-2017",
    2 => "22-Feb-2017",
    3 => "27-May-2015",
    4 => "10-May-2015",
    5 => "10-May-2015",
    6 => "08-May-2015",
];

$result = [];

foreach ($dates as $date) {
    $result[$date] = array_key_exists($date, $result) ? $result[$date] + 1 : 1;
}

print_r($result);

只需尝试使用 array_count_valuesarray_count_values() 函数计算数组的所有值。

<?php
$dates = [
    0 => "22-Feb-2017",
    1 => "22-Feb-2017",
    2 => "22-Feb-2017",
    3 => "27-May-2015",
    4 => "10-May-2015",
    5 => "10-May-2015",
    6 => "08-May-2015",
];
$final_array = array_count_values($dates);
print_r($final_array);

输出

Array
(
    [22-Feb-2017] => 3
    [27-May-2015] => 1
    [10-May-2015] => 2
    [08-May-2015] => 1
)

这正是您所需要的:

  <?php
    $old_array=array(
        0 => "22-Feb-2017",
        1 => "22-Feb-2017",
        2 => "22-Feb-2017",
        3 => "27-May-2015",
        4 => "10-May-2015",
        5 => "10-May-2015",
        6 => "08-May-2015");

        /*
        Counting the occurances of value & storing it in a new array in the format:
        array("22-Feb-2017"=>3, "27-May-2015"=>2, .........)
        */
        $new_array = array_count_values($a);

        print_r($new_array);

        echo $new_array["22-Feb-2017"];
    ?>
$data=[0 => "22-Feb-2017",1 => "22-Feb-2017",2 => "22-Feb-2017",3 => "27-May-2015",4 => "10-May-2015",5 => "10-May-2015",6 => "08-May-2015"];
$a=array_count_values($data);

var_dump($a);