Php 如何从echo中删除最后一个分隔符

Php 如何从echo中删除最后一个分隔符,php,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

我有问题,因为我无法从回音中删除最后一个

使用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"
我如何做到这一点:

输出:

   "1": "a"
   "2": "b"
   "3": "a"
   "4": "b"
   "1": "a",
   "2": "b",
   "3": "a",
   "4": "b"
我开始尝试使用一些
rtrim
爆炸
等,但它不起作用

我已经开始尝试rtrim了 这不起作用这是我的代码:

 while($t= mysql_fetch_array($asd)){
$str = '
   "'.$t['a'].'": "'.$t['b'].'",';
    echo rtrim($str, ",");
使用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
使用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

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

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

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

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

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

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

}

$str = rtrim($str,",");

尝试一下,这会有所帮助。

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

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

}

$str = rtrim($str,",");
试试看,这会有帮助。

试试这个

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

$rest = rtrim($rest,",");
echo $rest;
试试这个

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

$rest = rtrim($rest,",");
echo $rest;

从我看到的情况来看,您正试图生成一个json对象,但这不是实现这一点的方法

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

echo json_decode($data);
这将以您尝试生成的格式输出json字符串


旁注1:

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


旁注2:


@jeroen在评论中说,不要使用
mysql\u fetch\u array
,这些方法已经被弃用了一段时间。寻找PDO、mysqli或使用带有适当ORM的php框架。

我看到的是,您正在尝试生成一个json对象,而不是这样做

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

echo json_decode($data);
这将以您尝试生成的格式输出json字符串


旁注1:

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


旁注2:


@jeroen在评论中说,不要使用
mysql\u fetch\u array
,这些方法已经被弃用了一段时间。寻找PDO、mysqli或使用带有适当ORM的php框架。

只需加入一个替代解决方案:
您不能在第一个位置附加尾随逗号,而不是在之后修剪它

假设您有
$num\u行中的结果数
,那么您可以执行以下操作:

$i = 1;
while($t = mysql_fetch_array($asd)) {
    $rest = '"' . $t['a'] . '": "' . $t['b'] . (($i==$num_rows) ? '"' : '",');
    ++$i;
}
echo $rest;
当然,请注意其他一些答案所指出的:您的
echo
在循环中,但应该站在循环之外

请注意您使用的是弃用的
mysql
扩展;您应该改用
mysqli
。请参见PHP文档中的注释:

警告此扩展在PHP5.5.0中被弃用,并在PHP7.0.0中被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答


只需加入另一种解决方案:
您不能在第一个位置附加尾随逗号,而不是在之后修剪它

假设您有
$num\u行中的结果数
,那么您可以执行以下操作:

$i = 1;
while($t = mysql_fetch_array($asd)) {
    $rest = '"' . $t['a'] . '": "' . $t['b'] . (($i==$num_rows) ? '"' : '",');
    ++$i;
}
echo $rest;
当然,请注意其他一些答案所指出的:您的
echo
在循环中,但应该站在循环之外

请注意您使用的是弃用的
mysql
扩展;您应该改用
mysqli
。请参见PHP文档中的注释:

警告此扩展在PHP5.5.0中被弃用,并在PHP7.0.0中被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答


您正在尝试生成json吗?使用rtrim($string,,')有两种方法。选项A是修改循环以检查当前元素是否是最后一个元素,如果是,则不要首先添加
。选项B是在完成后简单地去除
,请参见示例,对于使用
end()
,您创建的是一个字符串,而不是一个数组,并且您在每个循环中覆盖
$rest
的值,而不是附加?检查下面给出的答案,您试图生成json吗?使用rtrim($string,,')两种方法。选项A是修改循环以检查当前元素是否是最后一个元素,如果是,则不要首先添加
。选项B是在完成后简单地去除
,请参见示例,对于使用
end()
,您创建的是一个字符串,而不是一个数组,并且在每个循环中覆盖
$rest
的值,而不是追加。请检查下面给出的答案,谢谢,但这不起作用,因为它从我的输出外观“1”中删除了所有内容:“a”“2”:“b”“3”:“a”“4”:“b”@DawidWiewiór谢谢,我编辑了我的答案,请查看第二个OneHanks的帮助:)。您的代码更好,因为只有一行:)谢谢,但这不起作用,因为它从我的输出中删除了所有内容,如“1”:“a”“2”:“b”“3”:“a”“4”:“b”@DawidWiewiór谢谢,我编辑了我的答案,请查看第二行谢谢大家现在正在工作的帮助:)。您的代码更好,因为只有一行:)这是创建json的更好方法