嗨,我正在从wordpress网站获取JSON数据并将标题转换为
<?php $get=file_get_contents("https://www.thekashmirmonitor.net/wp-json/wp/v2/posts?categories=192");
$var=json_decode($get);
$km=array();
foreach($var as $data)
{ $km[]=$data->title->rendered;} ?>
获取标题即时打印输出后为
<div class="section-container">
<div class="bn-breaking-news" id="newsTicker5">
<div class="bn-label">#News:</div>
<div class="bn-news">
<ul>
<li> <?php echo $km[0]; ?> </li>
<li> <?php echo $km[1]; ?> </li>
<li> <?php echo $km[2]; ?> </li>
<li> <?php echo $km[3]; ?> </li>
<li> <?php echo $km[4]; ?> </li>
<li> <?php echo $km[5]; ?> </li>
<li> <?php echo $km[6]; ?> </li>
<li> <?php echo $km[7]; ?> </li>
<li> <?php echo $km[8]; ?> </li>
<li> <?php echo $km[9]; ?> </li>
<li> <?php echo $km[10]; ?> </li>
</ul>
</div>
<div class="bn-controls">
<button><span class="bn-arrow bn-prev"></span></button>
<button><span class="bn-action"></span></button>
<button><span class="bn-arrow bn-next"></span></button>
</div>
假设JSON结果只有3条记录,
但是我的股票报价中<li
的计数范围为0-10
它将仅获取3条记录,其余的<li>
将打印空的新闻行情记录
所以:我只想动态创建<li>
即json标题的数量= <li>
的数量
以我为例,它将是x,因此它将生成<li>
X xtimes
答案 0 :(得分:1)
使用此:
<div class="bn-news">
<ul>
<?php
foreach($km as $value) {
echo "<li>" . $value . "</li>";
}
?>
</ul>
</div>
答案 1 :(得分:1)
这个问题似乎还不清楚,但是我相信您希望为每个标题显示一个li
元素,并且没有空的li元素?
遍历数组并添加li
元素是非常简单的任务。
$url='https://www.thekashmirmonitor.net/wp-json/wp/v2/posts?categories=192';
$json=json_decode( file_get_contents( $url ) );
echo '<ul>';
foreach( $json as $obj )printf('<li>%s</li>',$obj->title->rendered);
echo '</ul>';
这将输出
在发表评论后再次阅读问题,我认为我误会了。列表中最多有10个项目,但结果应少于10个,菜单不应显示空的li
元素...?
对上述内容进行了修改,并将其包装在一个函数中,您只需要在其中提供提要的ID和最大计数即可。
function createlist( $id, $max=10 ){
$url=sprintf( 'https://www.thekashmirmonitor.net/wp-json/wp/v2/posts?categories=%d', $id );
$json=json_decode( file_get_contents( $url ) );
if( !empty( $json ) ){
$html=[];
$html[]=sprintf('<ul data-feed=%d>',$id );
foreach( $json as $i => $obj ){
if( $i < $max )$html[]=sprintf( '<li>%s</li>',$obj->title->rendered );
}
$html[]='</ul>';
}
return implode( PHP_EOL, $html );
}
$ticker_max_count=10;
echo createlist( 190, $ticker_max_count );
echo createlist( 191, $ticker_max_count );
echo createlist( 192, $ticker_max_count );
答案 2 :(得分:0)
如果您要循环十次,但也请确保不要打印空白列表项目,则可以尝试以下操作:
for ($i = 0; $i <= 9; $i++) {
if (isset($km[$i])) {
echo "<li>  $km[$i]  </li>\n";
} else {
exit;
}
}
如果至少存在10个项目,它将打印10次,但是如果索引不存在,它将退出循环。
另一种方法是使用foreach:
foreach ($km as $key=>$value) {
if ($key < 10) {
echo "<li>  $value  </li>\n";
} else {
exit;
}
}
它检查每个项目的键,并且仅在键小于10($km[0]
-$km[9]
)时打印。
这两种解决方案的代码量大致相同,应满足您的要求。我真的不能说一个比另一个更好