PHP - проверить, равны ли два массива - PullRequest
233 голосов
/ 15 апреля 2011

Я хотел бы проверить, равны ли два массива.Я имею в виду: тот же размер, тот же индекс, те же значения.Как я могу это сделать?

Используя !==, как предложено пользователем, я ожидаю, что следующее напечатало бы enter , если хотя бы один элемент в массиве (-ах) отличается,но на самом деле это не так.

if (($_POST['atlOriginal'] !== $oldAtlPosition) 
    or ($_POST['atl'] !== $aext) 
    or ($_POST['sidesOriginal'] !== $oldSidePosition) 
    or ($_POST['sidesOriginal'] !== $sideext)) {

    echo "enter";
}

Ответы [ 13 ]

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

Если вы хотите проверить неассоциативные массивы, вот решение:

$a = ['blog', 'company'];
$b = ['company', 'blog'];

(count(array_unique(array_merge($a, $b))) === count($a)) ? 'Equals' : 'Not Equals';
// Equals
0 голосов
/ 20 марта 2018

Синтаксическая проблема в ваших массивах

$array1 = array(
    'a' => 'value1',
    'b' => 'value2',
    'c' => 'value3',
 );

$array2 = array(
    'a' => 'value1',
    'b' => 'value2',
    'c' => 'value3',
 );

$diff = array_diff($array1, $array2);

var_dump($diff); 
0 голосов
/ 14 марта 2016

Использовать функцию php array_diff (array1, array2);

Возвращает разницу между массивами. Если его пусто, то они равны.

пример:

$array1 = array(
    'a' => 'value1',

    'b' => 'value2',

    'c' => 'value3'
 );

$array2 = array(
    'a' => 'value1',

    'b' => 'value2',

    'c' => 'value4'
 );

$diff = array_diff(array1, array2);

var_dump($diff); 

//it will print array = (0 => ['c'] => 'value4' ) 

Пример 2:

$array1 = array(
    'a' => 'value1',

    'b' => 'value2',

    'c' => 'value3',
 );

$array2 = array(
    'a' => 'value1',

    'b' => 'value2',

    'c' => 'value3',
 );

$diff = array_diff(array1, array2);

var_dump($diff); 

//it will print empty; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...