Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как отрезать лишнюю запятую?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Васенька
Отправлено: 23 Октября, 2012 - 23:39:54
Post Id


Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Привет. Требуется вывести информацию для одного из пунктов списка, информация находится в массиве. Код вот такой:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP if (!empty($abc['Info'])) {
  3.         echo "<li>Описание этого пункта: ";
  4.         foreach($abc['Info'] as $info) { /* выводим в цикле всё что у нас есть в массиве */
  5.         echo $info['info'].", "; /* добавляем запятую */
  6.         }
  7.         echo "</li>";
  8. }
  9.  
  10. ?>
  11.  

Как вы видите, код весьма простенький. Проблема в том что получается лишняя запятая.
Выглядит это вот так:

<li>Описание этого пункта: важная информация, тест, ололо, </li>

Вопрос: как отрезать эту запятую или переиначить код чтоб такой проблемы не возникало? Спасибо.
 
 Top
DlTA
Отправлено: 23 Октября, 2012 - 23:52:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




так чтоб сильно не заморачиваться:
PHP:
скопировать код в буфер обмена
  1.         if (!empty($abc['Info'])) {
  2.                 echo "<li>Описание этого пункта: ";
  3.                 $separator = "";
  4.                 foreach($abc['Info'] as $info) { /* выводим в цикле всё что у нас есть в массиве */
  5.                         echo $separator.$info['info']; /* добавляем запятую */
  6.                         $separator = ", ";
  7.                 }
  8.                 echo "</li>";
  9.         }
 
 Top
OrmaJever Модератор
Отправлено: 23 Октября, 2012 - 23:55:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




1) можно зделать проверку, если это первая итерация цикла то не выводим заятую, а если нет то выводим её перед info, а не после.
2) записывать весь текст в переменую, а в конце зделать rtrim() и вторым параметром указать запятую


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 24 Октября, 2012 - 00:02:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




3) запилить все в массив и сделать implode(", ",$arry)
 
 Top
Васенька
Отправлено: 24 Октября, 2012 - 10:51:56
Post Id


Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DlTA пишет:
так чтоб сильно не заморачиваться:
PHP:
скопировать код в буфер обмена
  1.         if (!empty($abc['Info'])) {
  2.                 echo "<li>Описание этого пункта: ";
  3.                 $separator = "";
  4.                 foreach($abc['Info'] as $info) { /* выводим в цикле всё что у нас есть в массиве */
  5.                         echo $separator.$info['info']; /* добавляем запятую */
  6.                         $separator = ", ";
  7.                 }
  8.                 echo "</li>";
  9.         }


Вот это ок, спасибо.
 
 Top
sKaa
Отправлено: 24 Октября, 2012 - 11:00:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. if (!empty($abc['Info'])) {
  2.                 echo "<li>Описание этого пункта: ";
  3.  
  4.                 foreach($abc['Info'] as $key => $info) { /* выводим в цикле всё что у нас есть в массиве */
  5.                  
  6.                         echo ($key) ? $info['info'] : ',' . $info['info'] ; /* добавляем запятую */
  7.  
  8.                 }
  9.                 echo "</li>";
  10.         }

ПС : Не проверял...

(Отредактировано автором: 24 Октября, 2012 - 11:01:29)

 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Октября, 2012 - 12:09:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну вы дали, блин.... А ведь правильное решение проскочило у кого-то на словах...
PHP:
скопировать код в буфер обмена
  1. if (sizeof($abc['Info']) > 0) {
  2.   echo ' <li>Описание этого пункта: ' . join(", ", $abc['Info']) . '</li> ';
  3. }
 
 Top
haveFun
Отправлено: 24 Октября, 2012 - 12:43:44
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $check = FALSE;
  3. foreach($abc['Info'] as $info) {
  4. if (!$check) $check = TRUE; else echo ',';
  5. ...
  6. }
  7.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Октября, 2012 - 12:58:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ага... Хм
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB