删除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. 将string推入数组,并使用implode()
  2. 将这些位添加到string中,删除最后一个字符,然后回显string
  3. 迭代更明确,在最后一次迭代中,不要输出','

在这些选项中,我可能会使用#1,因为它使代码更加自我logging。

PHP有一个修剪function,给它一个string和逗号。

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

你将需要variables来存储逗号状态:

 $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 ); 

这是一个更简洁,(但可能由于临时arrays更多的内存效率低下)。

我喜欢内在的想法,但我经常使用三元运算符来保持一切简洁。 很多人不喜欢这个三元组,但是它是很多语言中非常有名的构造,所以我使用它。 在这种情况下,如果我在第一次迭代中$结果将是空的,所以我不插入逗号,否则我把新的数据之前的内容逗号:

 $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++; }