Как оператор эквивалентности работает с массивами в PHP? - PullRequest
2 голосов
/ 24 марта 2009

Код:

$arr = array( 10, 20, 30 );
$arr1 = array(
       1=>30,
       2=>20,
       0=>10
);
var_dump( $arr == $arr1 );

$a = array( 1, 2, 3);
$b = array(
       1=>2,
       2=>3,
       0=>1
 );
var_dump($a == $b);

Это выводит:

bool(false)
bool(true)

Ответы [ 6 ]

6 голосов
/ 24 марта 2009

Два массива будут считаться равными, если их соответствующие значения одинаковы.

В первом примере вы сравниваете два массива:

[10, 20, 30]
[10, 30, 20]

Очевидно, что это не одно и то же, поэтому возвращает false. Второй пример:

[1, 2, 3]
[1, 2, 3]

... одинаковы. Я что-то здесь упускаю?


Если вы хотите проверить, имеют ли два массива одинаковые члены, посмотрите этот вопрос: Алгоритм определения наличия у двух массивов одинаковых членов

Если вы просто хотите увидеть, что они имеют одинаковые итоги, вы можете использовать array_sum

2 голосов
/ 24 марта 2009

Если вы не укажете ключи для array, php автоматически выберет числа, начиная с 0. Поэтому следующие пары строк означают одно и то же:

$arr = array(10,20,30);
$arr = array(0=>10,1=>20,2=>30);

$a = array(1,2,3);
$a = array(0=>1,1=>2,2=>3);
0 голосов
/ 24 марта 2009

-ый оператор равенства равен === в php и в массиве => является правильным. также $arr !=$arr1 coz 20 !=30, 30!=20 согласно назначенному вами.

0 голосов
/ 24 марта 2009

Учитывая некоторые ваши комментарии, я думаю, было бы полезно, если бы вы прочитали тип массива в php . Главным образом тот факт, что нет никаких массивов без ключа.
И не забудьте также операторы сравнения .

0 голосов
/ 24 марта 2009

Это очень широкий вопрос, но в случае массива он сравнивается по индексу за индексом.

В вашем первом блоке кода $ arr не равен $ arr1, потому что 30! = 10 и 10! = 30.

Во втором блоке кода вы указываете, что в индексе 0 значение равно 1. В индексе 1 значение равно 2, а в индексе 2 значение равно 3. Таким образом, у вас есть тот же массив.

0 голосов
/ 24 марта 2009

Ожидается, что

array(10,20,30) != array(10,30,20)

и

array(1,2,3) == array(1,2,3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...