Intereting Posts
Использование mysql COUNT для подсчета нескольких столбцов jquery auto complete не показывает результат Какой способ записи в системные файлы Linux с помощью PHP Почему мой файловый скрипт php не перемещает файл? Преобразование чисел в визуальный рейтинг (звезды)? Нужна помощь в преобразовании кода SOAP PHP в Groovy с использованием groovy-wslite Как создать определенное количество эскизов из PDF с помощью Imagick, ImageMagick и PHP? Zend Framework 2: форматирование даты в представлении Нужно обновить мою базу данных одного пользователя, чтобы позволить нескольким пользователям, как изменить схему базы данных? Генерировать массив случайных уникальных чисел в PHP MySQL LAST_INSERT_ID () и FOUND_ROWS () Если на странице есть ошибка JavaScript, не загружается ли карта google? PHP, нужно вычесть 12 часов и 30 минут из DateTime API YouTube PHP – Zend_Gdata_App_HttpException Подготовленное заявление MySQLi не выполняется

Удаление последней запятой в PHP?

У меня есть этот код PHP:

foreach( $wpdb->get_results( ) as $key => $row) { echo "['". $row->DATE . "',". $row->total_sales . "],"; } 

Это дает следующее:

 ['09-08-11',0],['09-09-11',0],['09-10-11',0],['09-11-11',0], 

Как удалить последнюю запятую в цикле foreach?

Существует несколько подходов:

  1. Вставьте строки в массив и используйте implode ()
  2. Добавьте биты в строку, удалите последний символ, затем выполните эхо-строку
  3. Итерации более явно, и на последней итерации не выводят ','

Из этих вариантов я бы, вероятно, использовал # 1, потому что он делает код чуть более самодокументированным.

php имеет функцию обрезки, дает ему строку и запятую.

 $s = trim ($s,",") 

Вам понадобится переменная для сохранения состояния запятой:

 $comma = ""; ## don't need comma before first element foreach( $wpdb->get_results( ) as $key => $row) { echo $comma."['". $row->DATE . "',". $row->total_sales . "]"; $comma = ","; } 

Обычно я так делаю.

 $result = array(); foreach( $wpdb->get_results() as $key => $row ){ $result[] = "['". $row->DATE . "',". $row->total_sales . "]"; } echo implode( ',', $result ); 

Это немного более красноречиво (но, возможно, больше памяти неэффективно из-за временного массива).

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

 $results = ''; foreach( $wpdb->get_results() as $key => $row) { $results .= (empty($results) ? '' : ',') . "['". $row->DATE . "',". $row->total_sales . "]"; } echo $results; 
 $numItems = count($wpdb->get_results()); $i = 0; foreach( $wpdb->get_results() as $key => $row) { if($i+1 == $numItems) { echo "['". $row->DATE . "',". $row->total_sales . "]"; } else{ echo "['". $row->DATE . "',". $row->total_sales . "],"; } $i++; }