2011-12-25 11 views
0

スレッドから電話番号を引き出すためにpreg_match_allを使用しています。これは、それらを配列に入れます。imは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); 

出力の最後のインデックスなど、第二、最後のインデックスへの第1、第2、第:

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

+1

'rsort'と' array_reverse'と混同していますので、 'rsort'ではなく配列を逆順にするには' array_reverse'を使うべきです。 'array_reverse'は渡された元の配列を元に戻すのではなく、新しい逆配列を返します。[このリンク](http://php.net/manual/en/function.array-reverse.php)を参照してください。詳細: –

+0

いいえ、彼はDESCをソートしたいので、rsort .. –

答えて

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は2次元配列を与える。 $マッチの最初の要素を持つ必要があります。ユニークでrsortでさらに処理します。