我遇到问题,因为我无法从我的回声中删除
使用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
,explode
等,但它不起作用
我正在尝试使用rtrim 这不起作用是我的代码:
while($t= mysql_fetch_array($asd)){
$str = '
"'.$t['a'].'": "'.$t['b'].'",';
echo rtrim($str, ",");
答案 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指南和相关常见问题解答以获取更多信息。