我怎么能从echo中删除最后一个分隔符

时间:2017-06-29 09:42:10

标签: php

我遇到问题,因为我无法从我的回声中删除

使用rtrim

  while($t= mysql_fetch_array($asd)){
    $rest = '
       "'.$t['a'].'": "'.$t['b'].'",';
    echo rtrim($rest,",");

输出:

   "1": "a"
   "2": "b"
   "3": "a"
   "4": "b"

我怎么能这样做:

输出:

   "1": "a",
   "2": "b",
   "3": "a",
   "4": "b"

我尝试使用某些rtrimexplode等,但它不起作用

我正在尝试使用rtrim 这不起作用是我的代码:

 while($t= mysql_fetch_array($asd)){
$str = '
   "'.$t['a'].'": "'.$t['b'].'",';
    echo rtrim($str, ",");

6 个答案:

答案 0 :(得分:3)

从我看到的是你正在尝试生成一个json对象,这不是那种方法。

$data = [];
while (($t = mysql_fetch_array($asd))) {
    $data[$t['a']] = $t['b'];
}

echo json_decode($data);

这将以您尝试生成的格式输出json字符串。

旁注1:

你的代码中的rtrim不起作用的原因是因为你在while循环中而不是最后一行中的每一行。但是,由于您使用$rest =,因此在每次迭代中也会覆盖$rest的值。

旁注2:

@jeroen在评论中说了什么,使用mysql_fetch_array,这些方法已被弃用了一段时间。寻找PDO,mysqli或使用具有正确ORM的php框架。

答案 1 :(得分:1)

除了rtrim,你可以使用substr()删除最后一个字符:

while ($something) {
    //construct $str
}
$str = substr($str, 0, -1);

答案 2 :(得分:1)

您必须对单个字符串执行操作,但现在您正在while循环中的每个字符串实例上执行此操作,

L2

试一试,这会有所帮助。

答案 3 :(得分:0)

使用php rtrim()函数从右侧删除,rtrim()函数从字符串的右侧删除空格或其他预定义字符。

echo rtrim($rest,",");//remove all the , from right

或者,使用php的substr()函数删除最后一个字符

echo substr($rest,0,strlen($rest)-1);// remove the last character only

答案 4 :(得分:0)

试试这个

t

答案 5 :(得分:0)

只是提出另一种解决方案:
您无法在第一个位置附加尾随逗号而不是之后修剪它。

假设您在$num_rows中有结果数,那么您可以这样做:

$i = 1;
while($t = mysql_fetch_array($asd)) {
    $rest = '"' . $t['a'] . '": "' . $t['b'] . (($i==$num_rows) ? '"' : '",');
    ++$i;
}
echo $rest;

当然,请注意其他一些答案指出:您的echo 循环中,但应该站在循环之外。

请注意您使用的是已弃用的mysql扩展程序;你应该使用mysqli代替。请参阅PHP文档中的注释:

  

警告此扩展在PHP 5.5.0中已弃用,并已在PHP 7.0.0中删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息。