PHP迭代foreach,省略上次迭代的字符

时间:2011-04-02 11:19:29

标签: php foreach iteration

我想要遍历一个数组,组装一个字符串以便每次都返回。

我的问题是如何在数组的最后一次迭代中省略逗号,或者数组中只有一个元素?我不确定这个操作会被称为什么,因为我的编码技巧非常简陋,所以我没有太多运气寻找答案。即使帮助了解这个基本细节也会非常感激。

这是我想要的结果:

{ image : 'http://www.site.com/path/to/file/image1.jpg', title : 'Some title and caption' url : 'http://www.site.com/path/to/file/image1.jpg' },
{ image : 'http://www.site.com/path/to/file/image1.jpg', title : 'Some title and caption' url : 'http://www.site.com/path/to/file/image1.jpg' },
{ image : 'http://www.site.com/path/to/file/image1.jpg', title : 'Some title and caption' url : 'http://www.site.com/path/to/file/image1.jpg' }

请注意缺少尾随逗号。 下面是用于生成字符串的php Im。它将始终包含一个尾随的逗号,它引起了我各种各样的格雷夫。

//snipit
$i = 1;
$a = '';  
foreach ($pages as $go)
{
    $title  = ($go['media_title'] == '') ? ' ' : $go['media_title'];
    $caption = ($go['media_caption'] == '') ? ' ' : $go['media_caption'];

    $a .= "{ image :'" . BASEURL . GIMGS . "/$go[media_file]', title : '{$title}, {$caption}', url: '" . BASEURL . GIMGS . "/$go[media_file]' }";
    $a .= ",\n";

$i++; 
return $a;
}

非常感谢您的经历,
orionrush

4 个答案:

答案 0 :(得分:2)

$a[] = "{ image :'" . BASEURL . GIMGS . "/$go[media_file]', title : '{$title}, {$caption}', url: '" . BASEURL . GIMGS . "/$go[media_file]' }";

并通过

使用它
return implode(",\n", $a);

答案 1 :(得分:1)

您应该使用json_encode()

$data = array();
foreach ($pages as $go) {
    $title  = ($go['media_title'] == '') ? ' ' : $go['media_title'];
    $caption = ($go['media_caption'] == '') ? ' ' : $go['media_caption'];

    $data[] = array(
        'image' => BASEURL . GIMGS . '/' . $go['media_file'],
        'title' => $title . ', ' . $caption,
        'url' => BASEURL . GIMGS . '/' . $go['media_file']
    );
}

echo json_encode($data);

答案 2 :(得分:1)

foreach ($pages as $go){
    $return[] = json_encode($go);
}

return implode(",\n", $return);

在foreach中做你喜欢的事,implode会用逗号分隔你想要的行

答案 3 :(得分:0)

只需用substr:

来结束
return substr($a, 0, -3);