Trim last item?
9 posts by 3 authors in: Forums > CMS Builder
Last Post: November 19, 2015 (RSS)
By Toledoh - November 18, 2015
Hi All.
I've got a bunch of images, each with a caption, from which I can do the following:
<?php foreach ($home_pageRecord['hero_image'] as $index => $upload): ?>
{ img: '<?php echo htmlencode($upload['urlPath']) ?>', caption: "<?php echo $upload['info1'] ?>"},
<?php endforeach ?>
However, I need to trim the final item to remove the comma?
Tim (toledoh.com.au)
By Djulia - November 18, 2015 - edited: November 19, 2015
Hi Tim,
Try this :
<?php
$str = array();
foreach ($home_pageRecord['hero_image'] as $index => $upload) {
$str[] = '{img: '. htmlencode($upload['urlPath']) .', caption: '. htmlencode($upload['info1']). '}';
} echo implode(",", $str), "\n\n";
?>
Thanks!
Djulia
By Toledoh - November 19, 2015 - edited: November 19, 2015
Thanks Djulia.
I think you missed a bracket "(", but it's also trimming both commas, not just the last one?
<?php
foreach ($home_pageRecord['hero_image'] as $index => $upload) {
echo rtrim('{img: '. htmlencode($upload['urlPath']) .', caption: '. htmlencode($upload['info1']). '},', ',');
}
?>
is returning
{img: /~thelakes/cmsb/uploads/s1.jpg, caption: This is slide 1}{img: /~thelakes/cmsb/uploads/s2.jpg, caption: heres another slide}];
and needs to return
{img: /~thelakes/cmsb/uploads/s1.jpg, caption: This is slide 1},{img: /~thelakes/cmsb/uploads/s2.jpg, caption: heres another slide}];
Tim (toledoh.com.au)
By Djulia - November 19, 2015 - edited: November 19, 2015
Oops! I am not really awaked!
I have the feeling which you wish to obtain from the data encoded in json.
Can you test this?
<?php
$str = array();
foreach ($home_pageRecord['hero_image'] as $index => $upload) {
$str[] = '{img: '. htmlencode($upload['urlPath']) .', caption: '. htmlencode($upload['info1']). '}';
}
//echo json_encode($str, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
echo json_encode($str), "\n\n";
?>
By Djulia - November 19, 2015
I corrected my proposal.
http://www.interactivetools.com/forum/forum-posts.php?postNum=2237734#post2237734
By Toledoh - November 19, 2015
Hey Djulia.
I appreciate your help!
I am now getting the error: Notice: Array to string conversion in /home/thelakes/public_html/index.php on line 161Array];
If it helps, the complete code that I require is as below, and I'm trying to produce the highlighted.
<script>
var items = [
{ img: "image1.jpg", caption: "This is the first caption."},
{ img: "image2.jpg", caption: "This is the second caption."}
];var images = $.map(items, function(i) { return i.img; });
$.backstretch(images);
$(window).on("backstretch.show", function(e, instance) {
var newCaption = items[instance.index].caption;
$(".caption").text( newCaption );
});</script>
Tim (toledoh.com.au)
By Djulia - November 19, 2015
With the version json?
Can you state that there is on line 161?
Thanks!
By Daryl - November 19, 2015
Hi Tim,
Another way to do it is to check if the current array is the last item. If not, then add a comma.
For example:
$lastUploadRecord = end($home_pageRecord['hero_image']); // get the last record
$imageAndCaptionString = '';
foreach ($home_pageRecord['hero_image'] as $index => $upload){
$imageAndCaptionString .= '{img: "'.htmlencode($upload['urlPath']).'", caption: "'.htmlencode($upload['info1']).'"}';
if ($upload['num'] != $lastUploadRecord['num']){
$imageAndCaptionString .= ','; // add comma if this is not the last upload record
}
}
showme($imageAndCaptionString);
Let me know if that works for you.
Thanks,
PHP Programmer - interactivetools.com
By Toledoh - November 19, 2015
Hey Daryl - that worked thanks! I changed showme($imageAndCaptionString); to echo($imageAndCaptionString);
Tim (toledoh.com.au)