ACF在最后一个中继器字段值后面加一个逗号

时间:2021-05-11 作者:Dande

我有以下代码

<?php if(have_rows(\'ore\')):?>

        <?php while( have_rows(\'ore\')): the_row();

                $start = get_sub_field(\'start\');
                $end = get_sub_field(\'end\');
        ?>

         <?php if( get_row_index() != 1 ){ echo \'/\'; }?>
               <?php echo $start;?> – <?php echo $end;?>    
    
    <?php endwhile;?>
<?php endif;?>
输出两个字段(“开始”、“结束”)本表中:12.00–13.00。如果有多个,它们将显示为12.00–13.00/15.40–16.00,依此类推。

如何在最后一个字段后加逗号?(->;12.00–13.00/15.40–16.00,甚至12.00–13.00,)(我想我必须计算行数,当到达最后一行时,请使用逗号…)

谢谢

大卫

1 个回复
最合适的回答,由SO网友:Rup 整理而成

由于echo $end 块和endwnile, 因为您正在切换PHP,这意味着?><?php - i、 e.所有的空白-都将被回显。(然后HTML将空行和空格合并到一个单独的空间中以供显示。)

您只需在一个PHP块中执行此操作,就可以避免在PHP中进行切换,这将防止任何额外的空白得到回应:

<?php
if (have_rows(\'ore\')) {
    while(have_rows(\'ore\')) {
        the_row();

        $start = get_sub_field(\'start\');
        $end = get_sub_field(\'end\');

        if( get_row_index() != 1 ) {
            echo \'/\';
        }
        echo esc_html($start).\' - \'.esc_html($end);
    }
    echo \',\';
}
?>
注意,我还添加了esc_html() 在回显$开始值和$结束值时。在使用它们之前,我可能还会检查它们是否存在,除非你肯定它们总是有价值的。