0

このテーマの続きPHP を使用してフロントエンドの Wordpress でリモート XML ファイルを表示する方法は? 私は次の問題を尋ねられました:

<?php
$xmlhd = wp_remote_get('http://www.myurl.com/api/channel.php?type=hd');
$xmlparseado = simplexml_load_string($xmlhd['body']);

$content = '';
echo "<ul>";
$rows = $xmlparseado->channel->row;
foreach($rows as $key=>$row){   
    if($key =='row'){
        $row_string = '<li>';
        $row_string.= '<span>'.$row->date.'</span>';
        $row_string.= '<span>'.$row->time.'</span>';
        $row_string.= '<span>'.$row->description.'</span>';
        $row_string.= '<span>'.$row->imagethumb.'</span>';
        $row_string.= '</li>';
        $content.=$row_string;
    }   
}
echo $content;
echo "</ul>";
?>

XML は次を返します。

<programations>
    <channel name="KCBS HD">
        <row>
            <date>july, 23</date>
            <time>06:00</time>
            <title><![CDATA[ WKCBS Action News ]]></title>
            <description><![CDATA[ Action News, hosted by: Jenn Doe ]]></description>
            <imagethumb/>
        </row>
        <row>
            <date>July, 23</date>
            <time>06:35</time>
            <title><![CDATA[ KCBS Sports Center ]]></title>
            <description><![CDATA[ The best scoreS from the Sportscenter stadium, hosted by: Fernando Sobalaprieta ]]></description>
            <imagethumb/>
        </row>
    </channel>
</programations>

このコードは、以下で構成されるリストを表示します。

  • 日にち
  • 時間
  • 説明
  • 画像

たくさんありますが、日付を表示するように求められました。最初のエントリのみです。

最初のエントリ:

  • 日にち
  • 時間
  • 説明
  • 画像

2 番目のエントリとそれ以上:

  • 時間
  • 説明
  • 画像

問題は、その日の終わりを取得すると、日付が次の日に変わるため、条件付きを使用できないことです。

助言がありますか?

編集:

これを覚えておいてください:

毎日、最初のプログラムは日付を表示します。:)

4

3 に答える 3

1

私の理解が正しければ、最初のエントリだけに日付を表​​示する必要があります。したがって、ダミーカウンターを使用します。

$count = 0;
$first_date = "";
foreach($rows as $key=>$row){   
if($key =='row'){
    $row_string = '<li>';
    if($count == 0 ){ 
    $first_date = $row->date; 
    $row_string.= '<span>'.$row->date.'</span>';
    }
    $row_string.= '<span>'.$row->time.'</span>';
    $row_string.= '<span>'.$row->description.'</span>';
    $row_string.= '<span>'.$row->imagethumb.'</span>';
    $row_string.= '</li>';
    $content.=$row_string;
    if( $count == 0 || strcmp( $row->date, $first_date ) == 0 ) 
    $count++;
    else $count = 0;
}   
}

編集:わかりました。これで、その日の最初に表示されたエントリの日付のみが表示されます。

于 2013-07-25T21:48:00.833 に答える
0

うーん、不要な行をコメントアウトしてみてください。ところで、私はこれが正しいことを願っています。たとえば、これを試してください:

 $row_string = '<li>';
 $row_string.= '<span>'.$row->date.'</span>';
 //$row_string.= '<span>'.$row->time.'</span>';
 //$row_string.= '<span>'.$row->description.'</span>';
 $row_string.= '<span>'.$row->imagethumb.'</span>';
 $row_string.= '</li>';
 $content.=$row_string;

php を使用//すると、これらの行は無視されます。ここでは、時間と説明が表示されなくなります。

于 2013-07-25T21:30:22.923 に答える