从一个数组,在循环中删除重复值

问题描述 投票:0回答:1

我有这样的代码,还给3个阵列,我想您在所有3个副本,然后只保留1的值。但是,因为数组在循环array_unique生成/ array_差异不会工作。

是有这个问题的任何解决方案?

foreach ($ci AS $i) {
    if($i == 0){
        continue;
    }
    $cfsi = $cate->getCategoriesFeatureID($i);
    echo "<pre>";
    print_r($cfsi);
    echo "</pre>";
}

结果我得到

Array
(
    [0] => 14
    [1] => 15
    [2] => 16
    [3] => 18
    [4] => 19
    [5] => 20
    [6] => 27
)

Array
(
    [0] => 14
    [1] => 15
    [2] => 16
    [3] => 17
    [4] => 18
    [5] => 19
    [6] => 20
    [7] => 21
    [8] => 27
    [9] => 28
)

Array
(
    [0] => 11
    [1] => 14
    [2] => 16
    [3] => 18
    [4] => 19
    [5] => 27
    [6] => 28
)

我在寻找的结果

Array
(
    [0] => 14
    [1] => 15
    [2] => 16
    [3] => 18
    [4] => 19
    [5] => 20
    [6] => 27
)

Array
(

    [0] => 17
    [1] => 21
    [2] => 28
)

Array
(

    [0] => 11
)
php arrays duplicates
1个回答
2
投票

你可以做的是什么存储先前显示每次只(使用array_diff())报告从当前的差异来此之前的值。然后,在循环结束的当前值移动至前值。

$previous = [];
foreach ($ci AS $i) {
    if($i == 0){
        continue;
    }
    $cfsi = $cate->getCategoriesFeatureID($i);
    $difference = array_values(array_diff($cfsi, $previous));
    echo "<pre>";
    print_r($difference);
    echo "</pre>";
    $previous = $cfsi;
}
© www.soinside.com 2019 - 2024. All rights reserved.