如何以干净的方式回显列表的几个名称
Posted
技术标签:
【中文标题】如何以干净的方式回显列表的几个名称【英文标题】:How to echo just few names of a list, in a clean way 【发布时间】:2021-12-20 03:30:42 【问题描述】:我正在使用以下代码列出每个帖子的长列表的前 7 个名称。问题是当某个帖子包含低于 7 的名称列表时,对于每个缺失的名称直到 7,它会自动打印一个逗号','
因此,当名称为 7 或更多时,它会正确显示: “名称 1,名称 2,名称 3,名称 4,名称 5,名称 6,名称 7” 例如,如果它只包含 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 ',';
,但它报告了系统错误语法:(
有什么建议吗?
【问题讨论】:
if ('' !== $url)
在这里是一个无用的检查,它将始终评估为真,因为您在上面的行中将该变量设置为非空。如果你的名字少于 7 个,这也应该抛出一些 Undefined index
-warnings。
【参考方案1】:
将循环限制为 $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++)
【讨论】:
【参考方案2】:你有一个数组中的“值”,所以你可以使用数组函数。
<?php
$values = get_post_meta($post->ID, 'list_of_names', true);
$value_array = explode(',', $values);
$hrefs = [];
foreach (array_slice($value_array,0,7) as $value)
$remove_space = str_replace(' ', '-', $value);
$url = esc_url('myblogurl' . $remove_space);
if ('' !== $url)
$display = esc_html($value);
$hrefs[] = "<a href='$url'>$display</a>";
echo implode(",", $hrefs);
?>
见:array_slice()
如果您希望其他人了解您的代码的含义,我建议您使用除 value
之外的其他名称作为变量名。
【讨论】:
以上是关于如何以干净的方式回显列表的几个名称的主要内容,如果未能解决你的问题,请参考以下文章