如何从数组中删除最后一个逗号(,)?

4

我已经查看了这个地址:

使用WHERE子句将数组传递给查询

发现如果使用连接子句来分隔值,, 也会出现在数组的末尾。如何去掉最后一个?

我是这样使用的

$ttst=array();
$ttst=array(); 
$tt = "SELECT frd_id FROM network WHERE mem_id='$userId'"; 
$appLdone = execute_query($tt, true, "select"); 
foreach($appLdone as $kk=>$applist){ 
    $ttst[] = $applist['frd_id']; 
} 
$result = implode(',', $ttst); 

然后最后也要来,

谢谢。


但它没有为每个值提供单引号。

1
你使用join()来分隔值吗?你是指split()对吧? - nageeb
@Cold Hawaiian, $ids = join(',',$galleries); $sql = "SELECT * FROM galleries WHERE id IN ($ids)"; - RockDance
2
所以你在数组中有一个空元素? - deceze
如果像我的答案中所示添加rtrim不能得到您想要的结果,您应该echo或var_dump $result,并解释它应该如何看起来,以澄清问题。 - Henrik Erlandsson
1
接受任意一个答案? - Varun Sridharan
7个回答

10
join(',', array_filter($galleries))

array_filter可以去除您似乎拥有的空元素。当然,首先要注意不要在那里存在空元素。


9
您可以使用 trim()(或 rtrim())函数来实现:
$myStr = 'planes,trains,automobiles,';
$myStr = trim($myStr, ',');

4
$str = "orange,banana,apple,";
$str = rtrim($str,',');

这将会导致:
$str = "orange,banana,apple";

Update

Based on your situation:

$result = implode(',', $ttst);
$result = rtrim($result,',');

警告:substr() 函数期望第二个参数为长整型,但实际传递了字符串类型。 - RockDance

0

如果末尾的“,”是数组本身的元素,则使用array_pop(),否则使用rtrim()

$array = array('one','two',3,',');
array_pop($array);
print_r($array);

给出:

数组([0] => one 1 => two 2 => 3)


0
$arr = array(...); 
$last = end($arr); 
unset($last); 

0

不需要长度。从开头取到(最后一个字符 - 1)即可。

$finalResult = $str = substr($result, 0, -1);

-1

使用implode()代替!请参见此处的示例#1 http://php.net/manual/en/function.implode.php

编辑:

我认为一个快速修复方法是(分步骤):

$temp = rtrim(implode(',', $ttst), ','); //trim last comma caused by last empty value
$temp2 = "'"; //starting quote
$temp2 .=  str_replace(",", "','", $temp); //quotes around commas
$temp2 .= "'"; //ending quote
$result = $temp2; // = 'apples','bananas','oranges'

这应该会在字符串周围加上单引号,但请注意,如果数组中的某些值有时为空,您可能需要编写一个foreach循环并构建字符串。


我是这样使用的 $ttst=array();$ttst=array(); $tt = "SELECT frd_id FROM network WHERE mem_id='$userId'"; $appLdone = execute_query($tt, true, "select"); foreach($appLdone as $kk=>$applist){ $ttst[] = $applist['frd_id']; } $result = implode(',', $ttst); 然后最后也会出现逗号。 - RockDance
1
@RockDance,你应该将那段代码(格式正确地)添加到问题中。 - Mischa
@deceze,好的,我一直使用implode而不是join,并且知道implode只在项目之间放置逗号。现在显然他在数组中有1个(或更多)空字符串结果,但在他编辑问题之前很难看出来。 - Henrik Erlandsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接