2011-09-01 85 views
2

我有一串逗号分隔值。唯一数组值

1,2,3,4,4,4,4,4,4,4,4,01633,4,4 

我需要删除重复的,所以我虽然使用

array_unique($str); 

但是,它不返回任何结果的。所以我决定输出它看看我有什么:

print_r($str); 
// returns: 1,2,3,4,4,4,4,4,4,4,4,01633,4,4 

我有点迷路。我检查了它是否是一个数组,我确定了。以下是如何创建该字符串:

$str = '1,2,3'; 

foreach ($a as $b) { 
    $str.= ','.$b; 
} 

我在这里错过了什么?

回答

2

转换到一个数组,删除重复值,转换成字符串

$str = 'whatever'; 
$arr = explode(',', $str); 
$newArr = array_unique($arr); 
$newStr = implode(',', $newArr); 
+0

我实际测试过,看看它是否是一个数组:is_array($ str)? '数组':'不是数组';并获得Array ... – santa

+0

@santa,然后跳过第1-2行并使用第3-4行。您不应该将数组值存储在名为'$ str'的​​变量中。 – zzzzBov

4
$str = explode(',', $str); // create array 
$newArray = array_unique($str); // then process 

实际上,虽然...只是做你array_unique()$a创建字符串之前。

$a = array_unique($a); 

然后...

foreach ($a as $b) { // and so on 
+1

或者在一行中'$ newArray = array_un ique(explode(',',$ str));'^ _^ – Neal

+0

我实际上最终需要它作为逗号分隔值,只是没有重复...我是否必须内爆它呢? – santa

+0

如果你按照上面我提出的第一种方法,你可以使用'implode(',',$ newArray)''创建一个字符串。 – 65Fbef05

1

发生爆炸逗号,使独特,胶件一起回来:

$str = implode(',', array_unique(explode(',', $str)));