1

如何从 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

4 回答 4

2

您可以通过以下方式进行:

//$rgData comes from preg_match_all
$rgResult = array_map('array_unique', $rgData);
于 2013-09-18T08:21:14.683 回答
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"
 }
于 2013-09-18T08:22:57.853 回答
0

采用:

<?php
foreach($array as $key=>$each) {
    $array[$key] = array_unique($each);
}
print_r($array);
?>
于 2013-09-18T08:25:07.323 回答
0

试试这个 :

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

}
于 2013-09-18T08:25:11.973 回答