【问题标题】:php get unique sub array [duplicate]php获取唯一的子数组[重复]
【发布时间】:2013-10-04 19:43:59
【问题描述】:

我想在 PHP 中获得一个解决方案,以获取基于子数组基础的唯一数组。像这样

Array
(
[0] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[1] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[2] => Array
    (
        [0] => 1228
        [1] => 146
        [2] => 1
        [3] => 39
    )
)

Array
(
[0] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[1] => Array
    (
        [0] => 1228
        [1] => 146
        [2] => 1
        [3] => 39
    )

)

我的意思是说array[1] 应该被删除,因为array[0]array[1] 是相同的。我尝试使用array_unique,但它对我不起作用。

【问题讨论】:

  • 我认为这正是你想要的:stackoverflow.com/questions/307674/…
  • 你们俩都没有真正阅读过 OPs 的问题,我想说...
  • 我相信他想从他的数组中删除重复的子数组。我相信我链接的问题解决了这个问题
  • 我搜索了 goold 和 stackoverflow,但可以找到该解决方案...可能没有使用正确的关键字。
  • 如何将此问题与 Hless 的答案联系起来

标签: php arrays


【解决方案1】:

这可以使用array_unique 完成,但您还需要使用SORT_REGULAR (PHP 5.2.9+) 标志:

$array = array(
    array(1227, 146, 1, 39),
    array(1227, 146, 1, 39),
    array(1228, 146, 1, 39),
);
$array = array_unique($array, SORT_REGULAR);

输出:

Array
(
    [0] => Array
        (
            [0] => 1227
            [1] => 146
            [2] => 1
            [3] => 39
        )

    [2] => Array
        (
            [0] => 1228
            [1] => 146
            [2] => 1
            [3] => 39
        )

)

Demo!

对于旧版本的 PHP,您可以使用我在问题 cmets 中链接到的 solution

$array = array_map("unserialize", array_unique(array_map("serialize", $array)));

希望这会有所帮助!

【讨论】:

  • 工作,除了 PHP 手册说“array_unique() 不适用于多维数组”。谨慎使用。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2018-06-24
  • 1970-01-01
  • 2012-06-30
  • 2018-01-04
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
相关资源
最近更新 更多