У меня есть два массива, как показано ниже:
$arr1 = array(1,2,3, 1,2,3, 1,2,3);
$arr2 = array(1,2,3)
Мне нужно проверить, что они одинакового массива. Я сделал что-то вроде:
$result = !empty(array_intersect($arr1, $arr2));
print $result;
Результат: есть true
Но это неправильно для моих требований.
Скажем, например, если я обновлю массивы ::
$arr1 = array(1,2,3, 1,2,3, 1,2,3, 7);
$arr2 = array(1,2,3)
Результат: все еще true
, Мне нужен результат false
Вопрос: Как получить результат, что вышеупомянутые массивы не совпадают после обновления массива $arr1
в PHP?
Заранее спасибо.
Насколько я понял, ваш $arr1
нужны только элементы, которые находятся в $arr2
, когда $arr1
есть новый элемент, вы утверждаете, что он не идентичен.
Исходя из этого понимания, вам нужно использовать array_diff
:
$arr1 = array(1, 2, 3, 1, 2, 3, 1, 2, 3, 7);
$arr2 = array(1, 2, 3);
if (count(array_diff($arr1, $arr2))) {
echo 'Not Identical';
} else {
echo 'Identical';
}
Ты можешь использовать empty
вместо count
, В этом случае просто измените условия.
Пояснение:
array_diff
дает вам разницу элементов, которых нет ни в одном из массивов. Так что в этом случае это имеет место:
Array
(
[9] => 7
)
array_intersect
дает вам пересечение элементов, которые присутствуют в обоих массивах. Таким образом, в этом случае это имеет место:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 1
[4] => 2
[5] => 3
[6] => 1
[7] => 2
[8] => 3
)
Так вот почему empty
функция возвращает true
когда вы используете array_intersect
,
Других решений пока нет …