2013-08-27 26 views
1

我有這樣從一個數組

Array 
(
    [0] => u1,u2 
    [1] => u2,u1 
    [2] => u4,u3 
    [3] => u1,u3 
    [4] => u1,u2 
) 

我想從我想要一個徹頭徹尾讓像

Array 
    (
     [0] => u1,u2 
     [1] => u4,u3 
     [2] => u1,u3 

    ) 

我試圖環通數組 刪除類似值的數組中刪除相同的值輸入數組,按字母順序對索引值進行排序,然後嘗試使用array_search查找重複值。但從來沒有真正得到所需的輸出

任何幫助apprecated

+0

http://php.net/manual/en /function.array-unique.php –

+0

@RoyalBg:因爲array_unique不工作,我試過所有這些步驟。它不會工作 – zamil

+0

正如我在答覆的評論中所說的,從u1,u2開始,它們都不會起作用! == u2,u1'。 'array_unique'只匹配確切的值。 – BenM

回答

3

不能單獨使用array_unique(),因爲這隻會只匹配確切的重複。因此,您必須循環並檢查每個值的排列。

您可以使用array_unique()開始與,然後遍歷:

$myArray = array('u1,u2', 'u2,u1', 'u4,u3', 'u1,u3', 'u1,u2'); 

$newArr = array_unique($myArray); 
$holderArr = array(); 

foreach($newArr as $val) 
{ 
    $parts = explode(',', $val); 
    $part1 = $parts[0].','.$parts[1]; 
    $part2 = $parts[1].','.$parts[0]; 

    if(!in_array($part1, $holderArr) && !in_array($part2, $holderArr)) 
    { 
     $holderArr[] = $val; 
    } 
} 

$newArr = $holderArr; 

上面的代碼將產生以下輸出:

Array ( 
    [0] => u1,u2 
    [1] => u4,u3 
    [2] => u1,u3 
) 
+0

這解決了我的問題。非常感謝Ben :)。感謝所有試圖解決這個問題的人。 – zamil

+0

認爲這是整個答案的決定:) +1。 –

+1

很高興幫助。對其他人的說明,它有時有助於閱讀整個問題:) – BenM

0

使用array_unique() PHP函數:

http://php.net/manual/en/function.array-unique.php

+1

我不認爲'array_unique'會在這裏工作,因爲'u1,u2!== u2,u1'。 – BenM

+0

「想刪除類似的值」 u1,u2!== u2,u1 - >他們並不相似,我想。 –

+1

查看所需的輸出。 '唯一'!='相似'。 – BenM

0

使用功能array_unique($array)

0
array array_unique (array $array [, int $sort_flags = SORT_STRING ]) 

php manual

+1

因爲'u1,u2!== u2,u1',我不認爲'array_unique'會在這裏工作。 – BenM

0

由於U1,U2!== U2,U1

$array=array('u1,u2','u2,u1','u4,u3','u1,u3','u1,u2'); 
    foreach($array as $k=>$v) 
    { 
     $sub_arr = explode(',',$v); 
     asort($sub_arr); 
     $array[$k] = implode(',',$sub_arr); 
    } 

    $unique_array = array_unique($array); 

    //$unique_array = array_values($unique_array) //if you want to preserve the ordered keys