如何删除输出的最后一个字符(,)。
我尝试了几件事,但没有一件对我有用。 这是我的代码:
$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;
}
答案 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++;
}