从结果中删除最后一个字符

时间:2015-07-03 22:46:52

标签: php

如何删除输出的最后一个字符(,)。

我尝试了几件事,但没有一件对我有用。 这是我的代码:

$sql = "SELECT t_id, t_time, t_value FROM templogger";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_assoc()) {
      $string = "[".$row["t_time"].", ".$row["t_value"]."],";
      $trim = substr($string, 0, -1);

echo $ trim;

    }

4 个答案:

答案 0 :(得分:2)

首先不要输出它。

猜解:

$first = true;
while($row = $result->fetch_assoc()) {
  if( !$first ) { echo ','; }
  echo "[".$row["t_time"].", ".$row["t_value"]."]";
}

内爆:

$foo = [];
while($row = $result->fetch_assoc()) {
  $foo[] = "[".$row["t_time"].", ".$row["t_value"]."]";
}
echo implode(',', $foo);

但是,如果您只是尝试输出像@rotvulpix建议的JSON,那么您不应该首先尝试手动格式化它:

$foo = [];
while($row = $result->fetch_assoc()) {
  $foo[] = [ $row["t_time"], $row["t_value"] ];
}
echo json_encode($foo);

答案 1 :(得分:2)

构建输出,然后在删除最后一个逗号后将其回显一次。

$data= mysql_real_escape_string($_POST['data']);

答案 2 :(得分:0)

$total     = $result->num_rows;
$counter   = 0;
while ($row = mysql_fetch_array($result)) {
    echo '['.$row['t_time'].', '.$row['t_value'].']';
    if (++$counter !== $total) {
        echo ',';
    } 
}

答案 3 :(得分:0)

可能有更优雅的解决方案,但这应该可以解决问题。

替换:

while($row = $result->fetch_assoc()) {
    echo "[".$row["t_time"].", ".$row["t_value"]."],";
}

使用:

$z=0;
while($row = $result->fetch_assoc()) {
    $row_array[$z] = "[".$row["t_time"].", ".$row["t_value"]."]";
    $z++;
}

$z=0;
while($z < count($row_array)) {
    if($z == count($row_array)-1) {
        echo $row_array[$z];
    } else {
        echo $row_array[$z].',';    
    }
    $z++;
}