php数组数组删除包含匹配的值集合的数组

时间:2017-10-10 18:17:57

标签: php arrays multidimensional-array

Array
(
  [0] => Array
    (
        [0] => 4937
    )

  [1] => Array
    (
        [0] => 4937
        [1] => 4941
    )

  [2] => Array
    (
        [0] => 4937
        [1] => 5610
    )

  [3] => Array
    (
        [0] => 4937
        [1] => 5610
        [2] => 4943
    )

  [4] => Array
    (
        [0] => 108
    )

)

每个数组都是一个类别列表,后跟其子类别和子子类别。我想只显示原始的数字模式。所以我想删除数组2因为数组模式已存在于数组3中,但我想保留数组1,因为4937后面的数字与数组3不同。最终结果应为此,

Array
(

  [1] => Array
    (
        [0] => 4937
        [1] => 4941
    )

  [3] => Array
    (
        [0] => 4937
        [1] => 5610
        [2] => 4943
    )

  [4] => Array
    (
        [0] => 108
    )

)

1 个答案:

答案 0 :(得分:2)

如果您的子类别没有多个父母,请尝试以下方法:

for($i = 1; $i < count($array); $i++){
    end($array[$i-1]);
    $k = key($array[$i-1]);
    if ($array[$i-1][$k] == $array[$i][$k]) {
        unset($array[$i-1]);
    }
}
$array = array_values($array); // reindex array if you need