2017-06-07 11 views
0

私はプレスリリースを印刷するXMLファイルを持っています。アーカイブのように、プレスリリースが公開されてから何年もの間、私はエコーしたい。一意の値のみ。以下のコードはすべての年を印刷します。 「2017,2017,2017,2017,2016,2016,2015,2015,2014」のように、「2017,2016,2015,2014,2013」以外。Echo only unique values

<?php 
$file = "file.xml"; 
$xml = simplexml_load_file($file); 

foreach ($xml->Release as $release) { 
    $date = $release['PublishDateUtc']; /* $date is now in format yyyy-mm-ddT06:30:00 */ 
    $year = substr($date, 0, 4); 
    echo $year; 
} 

?> 
+0

値は常に順番に並んでいますか?最後の値を変数に格納し、最後の値が現在の値と等しくなければエコーするだけです。 –

答えて

2

すでに印刷された日付をメモします。

$printed = []; 

foreach ($xml->Releases as $release) { 
    $year = date('Y', strtotime($release['PublishDateUtc'])); 

    if (!isset($printed[$year])) { 
     echo $year; 
     $printed[$year] = $year; 
    } 
} 
+0

'echo $ printed [$ year] = $ year'を実行すると、コード行を保存します。 – Xorifelse

+0

@ Xorifelse私にとっては、それはあまり読めるものではありません。 – Justinas

+0

ありがとう、これは私の多くを助けた! – hogan

0

この

<?php 
$file  = "file.xml"; 
$xml   = simplexml_load_file($file); 
$yearArray = array(); 
$uniqueArray = array(); 
foreach ($xml->Release as $release) { 
    $date  = $release['PublishDateUtc']; 
    /* $date is now in format yyyy-mm-ddT06:30:00 */ 
    $year  = substr($date, 0, 4); 
    $yearArray[] = $year; 
} 

$uniqueArray = array_unique($yearArray); 
print_r($uniqueArray); 
?> 

を試してみては2つの余分な変数を初期化し、ユニークな配列を印刷loop.then内側年の配列を作ります。

+0

ありがとう、これはうまくいった! – hogan