如何以干净的方式回显列表的几个名称

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 &lt; 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 之外的其他名称作为变量名。

【讨论】:

以上是关于如何以干净的方式回显列表的几个名称的主要内容,如果未能解决你的问题,请参考以下文章

如何以干净的方式分叉现有的 Meteorite 包?

Python 的几个命令行参数

如何以干净有效的方式在pytorch中获得小批量?

如何以干净的方式在 Spring Data Redis 中实现事务?

如何以干净且可维护的方式编写非常复杂的 SQL? [关闭]

React 的 Upload 文件表单编辑回显及 onChange 自定义回调的方式