首页 > 解决方案 > 如何以干净的方式回显列表的几个名称

问题描述

我正在使用以下代码列出每个帖子的长列表的前 7 个名称。问题是当某个帖子包含低于 7 的名称列表时,对于每个缺失的名称直到 7,它会自动打印一个逗号','

因此,当名称为 7 或更多时,它会正确显示:“name1, name2, name3, name4, name5, name6, name7” 而例如,如果它仅包含 3 个名称,它将打印:“name1, name2, name3,, ,,”

无论如何要在代码中添加一些内容以排除打印逗号以防 7 次以下的名称?

<?php
$value = get_post_meta($post->ID, 'list_of_names', true);
$value_array = explode(',', $value);
$hrefs = []; 
for($i = 0; $i < 7; $i++)
{
    $remove_space = str_replace(' ', '-', $value_array[$i]);
    $url = esc_url('myblogurl' . $remove_space);
    if ('' !== $url)
    {
        $display = esc_html($value_array[$i]);
        $hrefs[] = "<a href='$url'>$display</a>";
    }
}
echo implode(",", $hrefs);
?>

我一直在尝试elseif($i < 6) { echo ',';在结束之前添加,但它向我报告了系统错误语法:(

有什么建议吗?

标签: javascriptphpdatabase

解决方案


将循环限制为 $value_array 的大小,同时保持 7 的限制。

for ($i = 0, $count = count($value_array); $i < 7 && $i < $count; $i++)

编码相同想法的另一种方法:

for ($i = 0, $min = min(7, count($value_array)); $i < $min; $i++)

推荐阅读