Удалить повторяющиеся значения из массива, который находится в цикле - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть этот код, который возвращает 3 массива, и я хочу проверить наличие дубликатов во всех 3, а затем оставить только 1 значение.Но поскольку массив генерируется в цикле, array_unique / array_ diff работать не будет.

есть ли решение этой проблемы?

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

РезультатЯ получаю

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
)

1 Ответ

0 голосов
/ 04 февраля 2019

Что вы можете сделать, это сохранить то, что было отображено ранее, и каждый раз сообщать только о различиях от текущего до этого предыдущего значения (используя array_diff()).Затем в конце цикла переместите текущее значение к предыдущему.

<code>$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 "
"; $ previous = $ cfsi;}
...