删除多维数组中的重复值

时间:2015-02-25 13:41:13

标签: php

我有一个像这样的多维数组

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [url] =>  http://www.youtube.com/watch?v=eJOiKuVeXA0
                    [title] => Title
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [url] => https://www.youtube.com/watch?v=KhF2R0m0N6I
                    [title] => Demo video Name
                )

            [1] => Array
                (
                    [url] => https://www.youtube.com/watch?v=oB1CUxX1JJE
                    [title] => second video
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [url] => https://www.youtube.com/watch?v=-D7VOPdAQfg
                    [title] => Title
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [url] => http://www.youtube.com/watch?v=eJOiKuVeXA0
                    [title] => Title
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [url] => https://www.youtube.com/watch?v=xAx2gc-zqzg&feature=player_detailpage
                    [title] => Title
                )

        )

    [8] => Array
        (
            [0] => Array
                (
                    [url] => https://www.youtube.com/watch?v=FVpmjX1DjmI
                    [title] => Title
                )

        )

    [10] => Array
        (
            [0] => Array
                (
                    [url] =>  http://www.youtube.com/watch?v=eJOiKuVeXA0
                    [title] => one
                )

        )

    [12] => Array
        (
            [0] => Array
                (
                    [url] => http://www.youtube.com/watch?v=eJOiKuVeXA0
                    [title] => Title
                )

            [1] => Array
                (
                    [url] =>  https://www.youtube.com/watch?v=-D7VOPdAQfg
                    [title] => Title
                )

        )

    [14] => Array
        (
            [0] => Array
                (
                    [url] =>  http://www.youtube.com/watch?v=eJOiKuVeXA0
                    [title] => Title
                )

            [1] => Array
                (
                    [url] => https://www.youtube.com/watch?v=-D7VOPdAQfg
                    [title] => Title
                )

        )

)

我无法删除多个网址值 想要删除重复的网址值... 如何删除重复的多维数组?

2 个答案:

答案 0 :(得分:0)

我猜你需要这个功能:

 function super_unique($array)
    {
      $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

      foreach ($result as $key => $value)
      {
        if ( is_array($value) )
        {
          $result[$key] = super_unique($value);
        }
      }

      return $result;
    }

    $a = array(array('foo', 'bar'), array('foo', 'bar'), array('foo', 'bar_foo'));

    print_r(super_unique($a));

结果是:

Array
(
    [0] => Array
        (
            [0] => foo
            [1] => bar
        )

    [2] => Array
        (
            [0] => foo
            [1] => bar_foo
        )

)

答案 1 :(得分:-1)

由于数组是多维的,您需要遍历这些项目,并保留您拥有的视频网址列表,并创建一个仅包含唯一项目的新数组,例如:

$unique_video_urls = array();
foreach($array as $id => $subarray) {
    foreach($subarray as $video) {
        if(!in_array($video['url'], $unique_video_urls)) {
            $unique_video_urls[] = $video['url'];
            $new_array[$id][] = $video;
        }
    }
}

$ array是你的原始数组。

在此示例中,$ new_array应该看起来像原始数组,但只包含唯一项。原始数组中的数组键是否已保留,假设它们对您有意义?

希望这是您根据需要使用来处理数组的起点。