从数组中删除重复值

时间:2017-01-05 06:44:32

标签: php arrays

我有一个看起来像 -

的数组
Array
(
    [0] => stdClass Object
    (
        [post_date] => 2017-01-04 14:28:00
    )

    [1] => stdClass Object
    (
        [post_date] => 2017-01-05 11:06:00
    )

    [2] => stdClass Object
    (
        [post_date] => 2017-02-04 14:28:00
    )

    [3] => stdClass Object
    (
        [post_date] => 2017-02-04 14:34:00
    )
)  

我使用substr()函数来获取特定的部分 -

foreach($unique_dates as $val) { 
    $year=substr($val->post_date,0,4);
    $month=substr($val->post_date,5,2);
    $monthName = date('F', mktime(0, 0, 0, $month, 10)); 
    echo $monthName." ".$year."<br>";
}  

现在它显示的输出如 -

January 2017  
January 2017  
February 2017  
February 2017   

但我想输出像 -

 January 2017  
February 2017 

我尝试如下但没有得到正确的输出 -

$unique_dates = array_map(
                    'unserialize',
                     array_unique(
                         array_map(
                             'serialize',
                             $dates
                         )
                     )
                );

我想删除重复值。
这怎么可能?
谢谢。

1 个答案:

答案 0 :(得分:1)

像这样运行:

foreach($unique_dates as $val) { 
    $year=substr($val->post_date,0,4);
    $month=substr($val->post_date,5,2);
    $monthName = date('F', mktime(0, 0, 0, $month, 10)); 
    $result[] = $monthName." ".$year;
} 
$result = array_flip($result); // here will remove the duplicate value, and return as the keys of the array.
array_walk($results, function($v, $k){echo $k.'<br>';});