Я использую следующий код, чтобы получить разницу между двумя массивами. Но, как кажется, сейчас он удаляет слишком много элементов, или я делаю что-то неправильно.array_diff() удаляет слишком много элементов
Я ожидаю, что выход будет array(333, 111)
, потому что элемент 111
появляется два раза в первом массиве и только один раз во втором. Итак, 1x 111
должен быть на выходе. Но на данный момент 111
полностью отсутствует на выходе.
Я делаю что-то неправильно или что мне делать, чтобы заставить эту функцию работать так, как я хочу?
<?php
$Inventory1 = "111,222,333,111";
$SplitInventory1 = explode(",",$Inventory1);
$Invoice = "111,222";
$SplitInvoice = explode(",",$Invoice);
$SplitResult1 = array_diff($SplitInventory1, $SplitInvoice);
echo $JointInventory1 = implode(",",$SplitResult1);
?>
'array_diff()' (То же самое для подобных функций) не учитывает количество одинаковых элементов. Поэтому, если в массиве теперь есть 1x'111' или 10x'111', не имеет значения, он просто будет один раз на выходе, или нет. Поэтому для того, что вы хотите, вы хотите написать свою собственную функцию, используя простой цикл foreach, чтобы отменить каждый элемент из одного массива в другом. – Rizier123
* "' array_diff' возвращает значения в массиве1, которые не присутствуют ни в одном из других массивов. «* -' 111' существует в другом массиве, зачем его нужно возвращать? – deceze