Php 如何从echo中删除最后一个分隔符
我有问题,因为我无法从回音中删除最后一个 使用rtrimPhp 如何从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
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, ",");
使用phprtrim()
函数从右侧删除,
。rtrim()
函数从字符串的右侧删除空格或其他预定义字符
echo rtrim($rest,",");//remove all the , from right
或者,使用php的substr()
函数删除最后一个字符
echo substr($rest,0,strlen($rest)-1);// remove the last character only
使用phprtrim()
函数从右侧删除,
。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的更好方法