-1

我有一个带有页面标题列表的 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 部分拿出来:

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

2 回答 2

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
于 2013-09-16T10:33:19.870 回答
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
于 2013-09-16T09:04:27.200 回答