PHP array_unique和rsort问题

时间:2011-12-25 10:02:08

标签: php arrays preg-match-all

我正在使用preg_match_all从线程中提取电话号码。这将它们放入一个数组中,我将rsort和array_unique同时应用于matches变量,但是它们没有任何效果...... 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)

2 个答案:

答案 0 :(得分: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 :(得分:1)

preg_match_all给出了一个二维数组。你需要拥有$ matches的第一个元素。用unique和rsort进一步处理它。