从while循环中删除最后一项的逗号

时间:2016-09-23 13:55:57

标签: php

我有以下代码打开CSV文件并将结果导出为JSON格式。

但是,我想从while循环中删除最后一个,。有人可以用我当前的代码解释我是如何做到这一点的吗?

<?php
ini_set('max_execution_time', 300);
$wantedColumns = array(3);
$row = 1;
 if (($handle = fopen("data.csv", "r")) !== FALSE) {

    echo '{
        "data": 
        [';

      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        if ($row == 1) {
            echo '<tr>';
        }else{
            echo '<tr>';
        }

        for ($c=0; $c < $num; $c++) {
            if (!in_array($c,$wantedColumns)) continue;



            if(empty($data[$c])) {
               $value = "&nbsp;";
            }else{
               $value = $data[$c];
            }

            if ($row == 1) {
            }else{
                echo ''.$value.','; // comma added here
            }
        }

    if ($row == 1) {
        echo '</tr>';
    }else{
        echo '</tr>';
    }

    $row++;
    //$value= substr($value, 0, -1);
   }
            echo '  ]
                }';

  echo '</tbody></table>';
echo '</center>';   
    fclose($handle);
 }
 ?>

1 个答案:

答案 0 :(得分:4)

在做这样的事情时,我更喜欢将值推送到数组,然后使用implode将它们连接起来

    $values = array();
    for ($c=0; $c < $num; $c++) {
        if (!in_array($c,$wantedColumns)) continue;



        if(empty($data[$c])) {
           $value = "&nbsp;";
        }else{
           $value = $data[$c];
        }

        if ($row == 1) {
        }else{
            $values[] = $value;
        }
    }

    echo implode(',', $values);