如何删除php上的最后一个逗号?
我有一个编辑过的超大号…我添加了一个代码,用于循环wp上的照片 我在原版上看到了这个:如何删除php上的最后一个逗号?,php,wordpress,slideshow,supersized,Php,Wordpress,Slideshow,Supersized,我有一个编辑过的超大号…我添加了一个代码,用于循环wp上的照片 我在原版上看到了这个: slides : [ {image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg', title : 'Image Credit: Brooke Shaden', thumb : 'h
slides : [
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg', title : 'Image Credit: Brooke Shaden', thumb : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/thumbs/shaden-2.jpg', url : 'http://www.nonsensesociety.com/2011/06/brooke-shaden/'},
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-3.jpg', title : 'Image Credit: Brooke Shaden', thumb : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/thumbs/shaden-3.jpg', url : 'http://www.nonsensesociety.com/2011/06/brooke-shaden/'}
],
我已经从wp编辑了循环库:
slides : [
<?php query_posts('cat=46'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
{image : '<?php echo $thumb; ?>'},
<?php } ?>
<?php endwhile; else: ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
],
幻灯片:[
{图像:''},
],
它可以在Chrome、Firefox等浏览器上运行
但我对IE 8-7和Firefox old上的此警报有一个问题:
消息:“幻灯片[…]。url”为空或不是对象
第23行
字符:3
代码:0
URI:supersized.3.0.js
我听说真正的问题是最后一个逗号(你可以在这篇文章的第一段代码中看到,没有…,它工作得很好)
因此,我想解决删除编辑幻灯片上最后一个逗号的问题…'因为它会在一个接一个的图像上重复逗号,并导致ie上出现此问题。。。
如何删除最后一个逗号?在JS对象数组中使用尾随逗号是有效的,因此逗号不是您的问题。引发此错误是因为您尚未设置幻灯片对象的URL属性。这是您当前输出的JSON字符串:
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg'}
但您需要完整的幻灯片对象,如下所示:
{image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/shaden-2.jpg', title: 'YOUR TITLE HERE', thumb: 'SOME IMAGE PATH GOES HERE', url: 'SOME URL PATH GOES HERE'}
更新:
人们似乎认为逗号存在某种问题。我不认为这是主要问题。它可能会导致问题(我不认为会),但除此之外,如果不抛出他在问题中指出的错误,这个家伙的代码将永远无法工作。我直接到超大型源代码向大家展示了问题所在
var imageLink = (options.slides[options.slides.length - 1].url) ? "href='" + options.slides[options.slides.length - 1].url + "'" : "";
就是这样。在第23行,正如他的错误消息所说。脚本正在尝试访问每个幻灯片对象的URL属性。但是他没有设置URL属性。因此,它总是抛出用户所说的错误。为什么您不断地在PHP中输入和输出?这效率太低了
slides : [
<?php
query_posts('cat=46');
if ( have_posts() ) {
$post_array = Array();
while ( have_posts() ) {
the_post();
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) {
$post_array[] = "{image : '".$thumb."'}";
}
}
echo implode(",",$post_array);
}
wp_reset_query();
?>
],
幻灯片:[
您确定问题是关于最后一次昏迷吗?如果是,您需要将所有图像保存在一个变量中,请在循环结束时清除最后一次昏迷,然后打印结果:
<?php $string = ''; ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
<?php $string.= '{image : '.$thumb.'},';
<?php } ?>
<?php endwhile; ?>
<?php echo substr($string, -1); ?>
3解决方案:
一:
{图像:''}
二:
$string[]=“{image:'}”;
$string.=“{image:'}”;
为什么不使用json
来形成幻灯片数组
<?php
$slide_arr = array ();
query_posts('cat=46');
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) {
$slideObj = new stdClass;
$slideObj->image = $thumb;
$slide_arr[] = $slideObj;
}
endwhile;
else:
endif;
wp_reset_query();
$slide_json = json_encode($slide_arr);
?>
var slide_json = '<?php echo $slide_json; ?>';
var slide_arr = eval('(' + slide_json + ')');
// js code ...
slides : slide_arr,
var slide_json='';
var slide_arr=eval(“(“+slide_json+”)”);
//js代码。。。
幻灯片:幻灯片,
首先,代码中的第三个PHP块缺少?>
@BrandonMiller-its在if(has_post_thumbnail())结尾处的结束符{?>
只是糟糕的格式虽然它是有效的javascript,但MSIE不接受。因此,尾随逗号实际上是他的问题的根源。--此外,严格的JSON不允许尾随逗号!我认为你错了。这里是小提琴。注意它在IE7/8中的工作方式。注意调用不存在的属性是如何不起作用的是的,对不起,MSIE和尾随逗号存在问题,但主要问题与您所说的完全一样。抱歉!出于好奇,您能解释一下为什么这种类型的编码效率低下吗?它会添加不必要的标记。我不知道PHP是如何工作的,但它不会对它有好处。每次您在一行上关闭PHP,然后在另一行上打开它他接着说,这就像添加一个print语句来打印一个换行符和一堆空白一样。这也让你的代码很难理解。Kolink的版本非常容易阅读!而且他的版本在最终输出中产生的意外空白少了很多。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
$string[]="{image : '<?php echo $thumb; ?>'}";
<?php } if (!empty($string)) implode(",",$string);
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) { ?>
$string.="{image : '<?php echo $thumb; ?>'}";
<?php } $lenght=strlen($string)-2;
echo substr($string,0,$lenght);
<?php
$slide_arr = array ();
query_posts('cat=46');
if ( have_posts() ) :
while ( have_posts() ) : the_post();
$thumb = get_post_meta($post->ID,'_thumbnail_id',false);
$thumb = wp_get_attachment_image_src($thumb[0], false);
$thumb = $thumb[0];
if ( has_post_thumbnail() ) {
$slideObj = new stdClass;
$slideObj->image = $thumb;
$slide_arr[] = $slideObj;
}
endwhile;
else:
endif;
wp_reset_query();
$slide_json = json_encode($slide_arr);
?>
var slide_json = '<?php echo $slide_json; ?>';
var slide_arr = eval('(' + slide_json + ')');
// js code ...
slides : slide_arr,