2009-10-03 4 views
0

좋습니다.이 질문은 절대적으로 쉬운 질문 일 뿐이며, 사과드립니다.각 날짜를 한 번만 표시하십시오.

내가 올바른 검색 용어를 찾지 못해 사과를하면 혼자서 대답 할 수 있습니다. 나는 시도했지만, PHP 유창성이 부족하여 검색 할 때 짜증이 난다.

foreach 루프 내에서 각 날짜를 한 번만 표시하는 간단한 방법을 찾고 있습니다. 다음과 같은 데이터를 반복합니다.

<?php 
    echo "<ul>"; 
    foreach($rss_items as $i){ 
    if($i->get_feed()->get_title() == 'Twitter (no @ replies)'){ 
    echo "<li>"; 
    echo $i->get_date(); 
    echo "<a href='" .$i->get_link()."'>Twitter</a>"; 
    echo $i->get_title(); 
    echo "</li>"; 
    } 
    elseif($i->get_feed()->get_title() == 'Pinboard (jpcody)'){ 
    echo "<li>"; 
    echo $i->get_date(); 
    echo "<a href='" .$i->get_link()."'>Pinboard</a>"; 
    echo $i->get_title(); 
    echo "</li>"; 
    } 
    elseif($i->get_feed()->get_title() == 'Entries at Church Marketing Sucks by Joshua Cody'){ 
    echo "<li>"; 
    echo $i->get_date(); 
    echo "<a href='" .$i->get_link()."'>Church Marketing Sucks</a>"; 
    echo "<a href='" .$i->get_link()."'>" . $i->get_title() . "</a>"; 
    echo $i->get_description(); 
    echo "</li>"; 
    } 
    elseif($i->get_feed()->get_title() == 'Flickr remove first paragraph'){ 
    echo "<li>"; 
    echo $i->get_date(); 
    echo "<a href='" .$i->get_link()."'>Flickr</a>"; 
    echo "<a href='" .$i->get_link()."'>" . $i->get_title() . "</a>"; 
    echo $i->get_description(); 
    echo "</li>"; 
    } 
    } 
    echo "</ul>"; 
?> 

각 항목에 날짜가 포함되어 있으므로 동일한 날짜를 여러 번 가져옵니다. 한 번만 각 날짜를 표시하고 싶습니다. 라 http://daringfireball.net.

저는 CodeIgniter와 SimplePie 라이브러리를 사용하기 때문에 모든 데이터가 db에 저장되는 대신 직접 가져 오게됩니다. 나는 날짜가 이미 사용되었는지 확인하기 위해 두 번째 if 문을 포함 할 수있는 방법을 상상해 보이지만이를 실행하는 방법을 모르겠습니다.

저는 PHP를 처음 접했고, 해결책을 제시하는 것 이상을 배우고 자합니다.

도움이된다면 도움이 될 것입니다.

답변

2

마지막으로 사용한 날짜를 기억하고 다른 경우에만 인쇄해야합니다. 당신은 같은 것을 시도 할 수 있습니다 :

$previous_date = null; 
foreach ($rss_items as $item) { 
    if ($item->get_date() != $previous_date) { 
     $previous_date = $item->get_date(); 
     echo '<li>' . $previous_date . '</li>'; 
    } 
    ... 
} 

을 (그리고 htmlspecialchars를 사용하여 제목과 링크를 인코딩을 HTML하는 것을 잊지 마세요.) 이것에

+0

루카스에게 고마움을 전합니다. 지금은 잠자리에 들지만, 내일이면이 일을 할 것이며, 너무 힘이 빠져서 나에게 도움이된다면 적절한 크레딧을 주어야합니다. 다시 한 번 감사드립니다! –

+0

안녕하세요 Lukas,이 일했습니다! 어떻게 제대로 작동하는지 이해할 수 있습니까? (1) 빈 변수를 정의하여 사용할 수 있으며 첫 번째 날짜가 표시됩니다. (2) 목록 항목의 날짜가 var과 같지 않으면 previous_date를 현재 날짜로 설정하고 현재 날짜를 표시합니다. (3) 다음 항목은 자신의 get_date가 최근에 저장된 변수와 같은지 검사하고, 그렇다면 날짜를 표시하지 않습니다. 현재 항목의 날짜가이 변수에 저장되면서 이전 날짜가 잘못된 것입니까? –

+0

어떻게 보느냐에 따라 다릅니다. :) 예, 현재 날짜가 변수에 저장되지만, 비교할 때마다 루프의 이전 반복에서 가져온 값이 포함됩니다. –

0

당신이 단지 그것을처럼 보이도록 날짜가 루프 전에, 또는 한 번 루프 당, 한 번에 표시 할 뜻 : - 항목 1
- 항목 2

날짜 1
- 등 ...

날짜 2
- 항목 1
- 항목 2
- 등 ...

형식을 명확히 할 수 있습니까? 왜냐하면 현재 유효한 $ i마다 날짜가 한 번 표시되기 때문입니다.

+0

나의 사과를. 당신은 당신의 이해가 정확합니다. 날짜를 한 번만 표시하고 그 날짜의 각 항목은 날짜 반복없이 표시하고 싶습니다. –

+0

루카스 (Lukas)의 대답을 시도해보십시오. 작동하지 않는다면 적절한 날짜를 먼저 설정 한 다음 두 번째 foreach 루프를 실행하여 각각의 내용을 채우십시오. (아주 예쁜 것은 아니지만 작동해야합니다.) 그것이 효과가 있기를 바랍니다! – Zolomon