2011-12-25 69 views
0

我正在使用preg_match_all從線程中提取電話號碼。這將它們放到一個數組中,即時將rsort和array_unique應用於matches變量,但是它們沒有任何影響...... array_unique將消除只能從引用或響應重複出現的匹配,並且rsort應該最後指數第一,倒數第二個指標,第二,等等PHP array_unique和rsort問題

preg_match_all('~0-9]{3}-[0-9]{3}-[0-9]{4}~', $data, $matches) 
$result = array_unique($matches); 
rsort($result); 
var_dump($result); 

輸出:

array 
0 => 
array 
    0 => string '111-111-1111' (length=12) 
    1 => string '222-222-2222' (length=12) 
    2 => string '333-333-3333' (length=12) 
    3 => string '444-444-4444' (length=12) 
    4 => string '555-555-5555' (length=12) 
    5 => string '555-555-5555' (length=12) 
    6 => string '555-555-5555' (length=12) 

需要是:

array 
0 => 
array 
    0 => string '555-555-5555' (length=12) 
    1 => string '444-444-4444' (length=12) 
    2 => string '333-333-3333' (length=12) 
    3 => string '222-222-2222' (length=12) 
    4 => string '111-111-1111' (length=12) 
+0

請將您的代碼添加到問題 – Abbas 2011-12-25 10:06:32

+1

您對'rsort'和'array_reverse'感到困惑,如果您想要反轉數組而不是'rsort',則應該使用'array_reverse'。還要注意''array_reverse'不會反轉傳遞給它的原始數組,但會返回一個新的反轉數組,請參閱[此鏈接](http://php.net/manual/en/function.array-reverse.php)詳細信息: – 2011-12-25 10:09:41

+0

不,他想排序DESC,所以rsort .. – 2011-12-25 10:11:43

回答

1

我想喲你需要匹配數組中的第一個元素。

preg_match_all('~0-9]{3}-[0-9]{3}-[0-9]{4}~', $data, $matches) 
$aList = $matches[0]; 
$result = array_unique($aList); 

rsort($result); 
var_dump($result); 
1

preg_match_all給出了一個二維數組。你需要有$匹配的第一個元素。進一步處理它獨特和rsort。