2017-06-29 74 views
0

我有问题,因为我不能最后删除,从我的回声如何删除最后一个分隔符,没有回声

与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" 

我arleady一些rtrim努力,explode等,但其不工作

我arleady与RTRIM 这并不在这里工作努力是我的代码:

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

你想要生成json吗? – Robert

+4

使用rtrim($ string,',') –

+0

两种方式。选项A是修改你的循环来检查当前元素是否是最后一个元素,如果是的话,不要首先添加','。选项B是在完成之后简单地去掉'','',参见例如['substr()'](http://php.net/manual/en/function.substr.php) – domsson

回答

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 
+0

谢谢,但这个dorangest工作,因为它从我的输出中删除所有看起来“1”:“a” “2”:“b” “3”:“a” “4”:“b” –

+0

@DawidWiewiór谢谢,我编辑了我的答案,检查第二个 –

+0

感谢家伙帮忙现在工作:)。你的代码更好,因为只有一行:) –

1

此外RTRIM,您可以使用substr()删除最后一个字符:

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

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

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

} 

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

试一试,这会有所帮助。

0

试试这个

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

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

从我看到的是,您要生成一个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_fetch_array,这些方法已被弃用了一段时间。寻找PDO,mysqli或使用适当ORM的php框架。

+0

这是更好的方式来创建json .good move – JYoThI

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指南和相关FAQ以获取更多信息。