Вывод массива без запятой в конце

242
21 июля 2017, 04:40

Переменная $group содержит массив, в котором нужно вывести последнюю строку без запятой. Делаю это так:

$group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';
 $numItems = count($group);
$i=0;
foreach($group as $filter) {
   if(++$i === $numItems) 
   echo $group;
   else echo $group',';
}

не получается. Как правильно?

Answer 1
$i = '';
foreach($group as $filter) {
   echo $i . $filter; 
   $i = ',';
}

Хотя ваш $group на массив мало похоже.

Answer 2

Вариант с объединением элементов массива в строку, на мой взгляд, наиболее удобен

echo join(',', $group);
Answer 3

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

<?php
    $group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';
    $group_cut = substr($group, 0, -1);
    $arr = json_decode($group_cut, true);
    echo $arr['file'];
?>
Answer 4

Можно еще проще сделать. Просто заменить

'},'

на

'}'

$group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';
$group = str_replace('},','}',$group);
Answer 5

В условие foreach надо добавить as $key => $filterи внутрь цикла добавить условие:

if ( $key != ($numItems - 1) ) { echo $group . ','; }
else { echo $group; }

И в определении массива убрать в конце запятую, то есть не:

$group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';

А так:

$group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"}';
Answer 6

В принципе вам ответили, добавлю от себя способ с регуляркой, допустим, что у вас может быть не один массив, а несколько.

$group  =   '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';
$group  =   preg_replace('#\,{1}\z#', '', $group);
$group_ARR  =   json_decode($group, true);
var_dump($group);
print_r($group_ARR);
echo end($group_ARR);
Answer 7

$group - строка, не массив. Проверьте, может ошиблись?

Подозреваю что $group - json объект, тогда его можно переделать в массив, а оттуда в строку:

$group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"}';
$array = json_decode($group, true);
$result = [];
foreach($array as $key => $value) {
    $result[] = $key . ':' . $value;
}
$result = implode(',', $result);

На выходе получим:

title:Title,artist:Artist,cover:img/1.png,file:./file/1.mp3

Answer 8
<?php
  $group = '{"title":"Title", "artist":"Artist", "cover":"img/1.png", "file":"./file/1.mp3"},';
  $group = substr($group, 0,-1);
  $array = json_decode($group);
  $result = [];
  foreach($array as $key => $value) {
    $result[$key] = $value;
  }
  echo "<pre>", var_dump($result);
?>
READ ALSO
Не ищет данные по некоторым словам

Не ищет данные по некоторым словам

Добрый день, пишу парсер xlsxПроблема вот в чем, вытащил все данные из файла, теперь нужно по ним отыскать данные в бд

248
функция setDate для дня недели

функция setDate для дня недели

Добрый деньМне необходимо получить дату следующей субботы

264
Как настроить вывод логов php в терминал ? Ubuntu 16.04

Как настроить вывод логов php в терминал ? Ubuntu 16.04

ак настроить вывод логов и ошибок php в терминал во время работы встроенного веб сервера php -S ? OS: ubuntu 1604

289
preg_match и кириллица

preg_match и кириллица

Всем здрааааааааааааааааааааааавствуйтеВозникла проблема с русскими буквами в регулярке preg_match

421