删除此查询中的最后一个逗号

时间:2013-06-14 作者:Саша Стефановић

我在ie8工作时遇到了问题,我发现最后一个逗号是问题,但不知道如何解决。

这是当前代码。

<?php $args = array( \'post_type\' => \'katalog\', \'posts_per_page\' => 999 );
$loop = new WP_Query( $args ); 
if ($loop->have_posts()) : 
while ($loop->have_posts()) : $loop->the_post(); ?>

<?php global $post; $thumb=wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'full\'); $thumb2=wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'medium\'); $url = rwmb_meta( \'smb_katalozi\' ); ?>
{image : "<?php echo $thumb[0] ?> ", title : "<?php echo get_the_title() ?>", url : "<?php echo post_permalink( $url ); ?>"},

<?php endwhile; else: endif; ?>
输出是这样的

{image : "img url", title : "title", url : "url"},
{image : "img url", title : "title", url : "url"},
我希望是这样

{image : "img url", title : "title", url : "url"},
{image : "img url", title : "title", url : "url"}
所以,就最后一个逗号而言,它是不同的。

将其与此代码配合使用

<?php
    $args = array( \'post_type\' => \'katalog\', \'posts_per_page\' => 999 );
    $loop = new WP_Query( $args ); 
    $post_count = 0;
    $te = $loop->post_count;
    $total = $te-1;
    if ($loop->have_posts()) : 
    while ($loop->have_posts()) : $loop->the_post(); 
    global $post;  $thumb=wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'full\'); $thumb2=wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'medium\'); $url = rwmb_meta( \'smb_katalozi\' );
    if ($post_count == 0 || $post_count !== $total) { ?>
        {image : "<?php echo $thumb[0] ?> ", title : "<?php echo get_the_title() ?>", url : "<?php echo post_permalink( $url ); ?>"},
    <?php } if ($post_count == $total) { ?>
        {image : "<?php echo $thumb[0] ?> ", title : "<?php echo get_the_title() ?>", url : "<?php echo post_permalink( $url ); ?>"}
    <?php }
    $post_count++;
    endwhile; else: endif;
    ?>

3 个回复
SO网友:webaware

看起来您正在尝试构建一些JSON。为什么不使用PHP已经提供的功能,它也有转义字符的优点?

global $post;

$data = array();

if ($loop->have_posts()) {
    while ($loop->have_posts()) {
        $loop->the_post();
        $thumb=wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'full\');
        $thumb2=wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'medium\');
        $url = rwmb_meta( \'smb_katalozi\' );

        $data[] = array (
            \'image\' => $thumb[0],
            \'title\' => get_the_title(),
            \'url\' => post_permalink( $url )
        );
    }
}

echo json_encode($data);

SO网友:Rarst

试着用这个代替里面的逗号while 回路:

if ( $loop->have_posts() )
    echo \',\';
只要循环中还有下一篇文章,这将输出逗号。

SO网友:JMau

虽然这可以在PHP中完成,但我更喜欢使用一些标记和css peudo类,例如last-child

所以这可以是:

<span class="last-child">{image : "<?php echo $thumb[0] ?> ", title : "<?php echo get_the_title() ?>", url : "<?php echo post_permalink( $url ); ?>"}</span>
在样式表中:

.last-child:after { content:", "; }
.last-child:last-child:after { content:"";}
您可以使用selectivzr 使其与IE上的旧版本兼容

结束

相关推荐

取消jQuery‘noConflict’-它真的不安全吗?

我使用一些外部插件(不是wordpress插件),它们使用“$”,我可以很方便地取消noConflict 模式,通过添加此行$=jQuery<但我想是他们发明的noConflict 模式并非毫无意义<问题是你有多担心它。这确实是一个使用问题$=jQuery?