如何从数组中获取特定值而不删除它们的重复项?

时间:2013-09-16 08:52:17

标签: php arrays

我有一个带有页面标题列表的XML数组。我从标题中提取了日期部分,得到了一个类似于:

的数组
Array ( [0] => 2012 ) 
Array ( [0] => 2013 ) 
Array ( [0] => 2013 )
Array ( [0] => 2014 ) 
Array ( [0] => 2014 ) 
Array ( [0] => 2014 ) 
Array ( [0] => 2015 )

我的问题是我如何遍历日期数组,以便在每个新年之间得到一个空行,例如:

  2012 - BLA

  2013 - BLA BLA
  2013 - BLABLA

  2014- BLA BLA BLA
  2014- BLA BLA BLA
  2014- BLA BLA BLA

  2015- BLA

我的想法是从标题中提取日期部分,然后浏览数组,并为每个新的唯一值设置一个新行。环顾四周,我没有找到一种方法,没有删除重复的值。有办法吗?拜托,我很感激任何帮助。

此致

XML示例:

SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) [channel] => SimpleXMLElement Object ( [title] => Results [description] => Search Results [link] => http://...... [item] => Array ( [0] => SimpleXMLElement Object ( [title] => 2012 Blah , Blah Blah, Blah [description] => <b>Introduction</b> ...Long text.. [link] => http... [1] => SimpleXMLElement Object ( [title] 
...

我所做的就是花了一年的时间用:

$year = substr(str_replace($type.", ", "", $xmlfeed->channel->item[$i]->title),0,4);

2 个答案:

答案 0 :(得分:0)

如果您的数组包含问题中的数组,那么我建议这样做: DEMO HERE

foreach($arrayOfArrays as $array){

     $simpleArray[]= $array[0];//simple array that contains only years
}

sort($simpleArray, SORT_NUMERIC); //we sort this array by year

foreach($simpleArray as $year){
    echo $year.' Bla Bla Bla <br/>';//display every year in a line
}

<强>输出:

2011 Bla bla bla
2012 Bla bla bla
2013 Bla bla bla
2013 Bla bla bla
2013 Bla bla bla
2015 Bla bla bla

答案 1 :(得分:0)

试试这个解决方案

<?php
$arr[0] = array (2015,'A15');
$arr[1] = array (2014,'D14');
$arr[2] = array (2014,'E14');
$arr[3] = array (2013,'B13');
$arr[4] = array (2013,'C13');
$arr[5] = array (2012,'F12');


$data = array();
foreach($arr as $key => $val) {
    $data[$key]=$val[0];
}
array_multisort($data,SORT_ASC,$arr);

$check=$arr[0][0];
for($i=0;$i<count($arr);$i++) {
    if($arr[$i][0]!=$check) {
        $check=$arr[$i][0];
        print "<br/>";
    }
    print $arr[$i][0] . "---" . $arr[$i][1] . "<br/>";
}

?>

输出

2012---F12

2013---B13
2013---C13

2014---D14
2014---E14

2015---A15