Сравняване на масиви и обекти

Как може да се проверява дали два масива са еднакви?

$arr1 === $arr2
$obj1 === $obj2

$c = new stdClass;
$c->a = 2;

$d = new stdClass;
$d->a = 2;

var_dump($c === $d);    // bool(false)
var_dump($c == $d);     // bool(true)

Първото сравнение $c === $d ще бъде true, само ако не само данните на двата класа са еднакви (атрибути, техните стойности), но и ако двата обекта са всъщност един и същ обект. Дори и да са отделни обекти от един клас, пак няма да е true.

class ClassicClass
{
    public int $i = 111;
    protected string $j = 'hello';
    private bool $k = false;
}

$c = new ClassicClass;
$d = new ClassicClass;
var_dump($c === $d);  // bool(false)

$d = $c;
var_dump($c === $d);  // bool(true)

$d = clone $c;
var_dump($c === $d);  // bool(false)

При масивите е по-просто.

$a = [11, 22, 33];
$b = [11, 22, 33];

if ($a == $b) {
    echo 'They are equal.';
}
if ($a === $b) {
    echo 'Yes, they are.';
}

// Output: They are equal.Yes they are.

Литература:

http://php.net/manual/en/language.oop5.object-comparison.php

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *