Как удалить несколько массивов из подсчета результатов в php

Я хочу спросить о том, как удалить несколько массивов, но я хочу удалить индекс из массива результатов, как я могу это сделать?

это мой код:

$new = [1, 2, 3, 4, 5];
$old = [2, 3, 5];

$b = count($old);

// expected result $b is 3

И я хочу удалить индекс в массиве $a и изменить индекс на [4, 5] (этот результат получается путем вычитания всего массива в $b)

так что для окончательного результата, как это

$a = [4, 5];

person LuckALip    schedule 15.10.2020    source источник
comment
Кстати, вы удаляете значения, а не индексы   -  person catcon    schedule 15.10.2020
comment
хм, как я могу удалить индекс?   -  person LuckALip    schedule 15.10.2020
comment
массив всегда имеет индекс, вы не можете его удалить   -  person catcon    schedule 15.10.2020
comment
нет, я имею в виду, прежде чем удалить индекс массива в переменной $new, я должен проверить номер массива индексов в переменной $old, если переменная $old имеет массив 3, то удаленный индекс в переменной $new удалит 3 индексов всего 5 индексов в массиве индексов переменной $new, зачем на мой вопрос уже отвечать? на мой вопрос еще нет правильного ответа здесь   -  person LuckALip    schedule 15.10.2020
comment
Я использую array_slice для решения своей проблемы, и это работает   -  person LuckALip    schedule 15.10.2020


Ответы (3)


Используйте функцию array_diff(), см. демонстрацию здесь

<?php

$new = [1, 2, 3, 4, 5];
$old = [1, 2, 3];

print_r(array_diff($new, $old));
person Akshay Hegde    schedule 15.10.2020
comment
перед этим я хочу сказать спасибо за помощь, но я хочу удалить свой массив из переменной $new, но не сравнивать их, я хочу удалить свой индекс на $new из результата подсчета в $old - person LuckALip; 15.10.2020
comment
@LuckALip, вы имеете в виду, что хотите перезаписать переменную $new? если да $new = array_diff($new, $old); сбросить ключи $new = array_values(array_diff($new, $old)); - person Akshay Hegde; 15.10.2020
comment
прежде чем удалить индекс массива в переменной $new, я должен проверить номер массива индексов в переменной $old, если переменная $old имеет массив 3, то удаленный индекс в переменной $new удалит 3 индекса из общего количества of 5 index в массиве index переменной $new - person LuckALip; 15.10.2020

Надеюсь, я правильно понял, я не уверен, что код count имеет отношение к чему-либо. Похоже, вы хотите разницу?

$result = array_diff($new, $old);

Урожайность:

Array
(
    [3] => 4
    [4] => 5
)
person AbraCadaver    schedule 15.10.2020
comment
Спасибо за ваш совет, но я хочу удалить свой индекс на $new из count, чтобы получить $old, а не сравнивать их оба. - person LuckALip; 15.10.2020
comment
Вам придется быть более подробным, так как я не понимаю, что вы хотите. - person AbraCadaver; 15.10.2020
comment
прежде чем я удалю индекс массива в переменной $new, я должен проверить номер массива индексов в переменной $old, если переменная $old имеет массив 3, то удаленный индекс в переменной $new удалит 3 индексы из всего 5 index в массиве index переменной $new - person LuckALip; 15.10.2020

Используя array_diff, вы можете получить разные элементы между массивами

https://www.php.net/manual/en/function.array-diff.php

Обратите внимание, что array_diff сохранит ключи первого массива. Это нормально для пар ключ/значение (ассоциативных массивов), но может вызвать проблемы для стандартных массивов.

Например:

$new = [1, 2, 3, 4, 5];
$old = [1, 2, 3];

$c = array_diff($new, $old);

// $c => [
//    3 => 4,
//    4 => 5
// ]

Это означает, что вам нужно будет использовать $c[3] для доступа к первому элементу.

Вы можете решить эту проблему, заключив array_diff в array_values для стандартных массивов.

$new = [1, 2, 3, 4, 5];
$old = [1, 2, 3];

$c = array_values(array_diff($new, $old));

// $c => [
//    0 => 4,
//    1 => 5
// ]
person Rylee    schedule 15.10.2020
comment
перед этим я хочу сказать спасибо за ваш совет, но я не должен перезаписывать свой массив, я просто хочу удалить свой индекс в переменной $new - person LuckALip; 15.10.2020
comment
Результат $c будет [4,5] во втором случае, разве это не то, что вам нужно? Если вы хотите, чтобы $new имел результат, вы можете переключить $c = ... на $new = ... - person Rylee; 15.10.2020
comment
Я имею в виду, прежде чем удалить индекс массива в переменной $new, я должен проверить номер массива индексов в переменной $old, если переменная $old имеет массив из 3, то удаленный индекс в переменной $new удалит 3 индекса из всего 5 индексов в массиве index переменной $new - person LuckALip; 15.10.2020