如何从preg_match_all生成的数组中删除重复项?

时间:2013-09-18 08:18:17

标签: php arrays multidimensional-array preg-match-all

如何从preg_match_all生成的数组中删除重复项?

当前数组

Array
    (
    Array
        (
            'font-family: "Comic Sans";',
            'font-weight: bold;',
            'font-weight: normal;',
            'font-family: "Comic Sans";',
            'font-weight: normal;'
        )

    Array
        (
            'font-family',
            'font-weight',
            'font-weight',
            'font-family',
            'font-weight'
        )

    Array
        (
            '"Comic Sans"',
            'bold',
            'normal',
            '"Comic Sans"',
            'normal'
        )
    )

如您所见,有几个重复的值。没有重复值的新数组应该如下所示。

新数组

Array
    (
    Array
        (
            font-family: "Comic Sans",
            font-weight: bold,
            font-weight: normal,
        )

    Array
        (
            font-family,
            font-weight,
            font-weight
        )

    Array
        (
            "Comic Sans",
            bold,
            normal
        )
    )

我知道我可以用foreach做到这一点,但我确信有更好的方法来完成这个结果。我有什么看法?

4 个答案:

答案 0 :(得分:2)

您可以通过以下方式完成:

//$rgData comes from preg_match_all
$rgResult = array_map('array_unique', $rgData);

答案 1 :(得分:1)

尝试使用array_unique函数

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

 $input = array(4, "4", "3", 4, 3, "3");
 $result = array_unique($input);
 var_dump($result);

输出

 array(2) {
   [0] => int(4)
   [2] => string(1) "3"
 }

答案 2 :(得分:0)

使用:

<?php
foreach($array as $key=>$each) {
    $array[$key] = array_unique($each);
}
print_r($array);
?>

答案 3 :(得分:0)

试试这个:

foreach($yourArray as $array){
  $array = array_unique($array);

}