PHP итерация foreach, исключая символы из последней итерации - PullRequest
1 голос
/ 02 апреля 2011

Я пытаюсь перебрать массив, собирая строку для возврата каждый раз.

Мой вопрос: как я могу опустить запятую на последней итерации массива или если в массиве только один элемент?Я не уверен, как эта операция будет называться, так как мои навыки кодирования очень элементарны, поэтому мне не повезло в поисках ответа.Даже помощь, зная эту основную деталь, будет высоко ценится.

это результат, который мне бы хотелось:

{ 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, который я использую для генерации строк.Это всегда будет включать запятую, которая вызывает у меня все виды greif.

//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 ]

2 голосов
/ 02 апреля 2011
$a[] = "{ image :'" . BASEURL . GIMGS . "/$go[media_file]', title : '{$title}, {$caption}', url: '" . BASEURL . GIMGS . "/$go[media_file]' }";

и используйте его

return implode(",\n", $a);
1 голос
/ 02 апреля 2011
foreach ($pages as $go){
    $return[] = json_encode($go);
}

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

делай то, что тебе нравится в foreach, имплоз будет разделять строки так, как ты хочешь

1 голос
/ 02 апреля 2011

Вы действительно должны использовать 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);
0 голосов
/ 02 апреля 2011

просто отрежьте конец с помощью substr:

return substr($a, 0, -3);
...