◆ === 順番も見る
◆ == 順番は見ない
 ただの配列での順番はキーが省略されてるだけでkeyとvalueのペアが異なるので別物になります


まずコピーしたものはもちろん一緒です
$a1 = [ "x" => 1 ]; $a2 = $a1; var_dump($a1 == $a2); var_dump($a1 === $a2);
true true

CoWで内部的に同じ1つのデータだからというわけではないです
同じデータを別に作っても等しくなります
$b = [ "x" => 1 ]; var_dump($a1 == $b); var_dump($a1 === $b);
true true

==と===の違いは 順番をみるかどうかです
$c = [ "x" => "x", "y" => "y", ]; $d = [ "y" => "y", "x" => "x", ]; var_dump($c == $d); var_dump($c === $d);
true false

PHPの配列には順番が内部的に保持されています
そのため $c$d は別になります
普段は並びを気にしないことが多いので == が多いと思います

注意するところは 連想配列じゃないただの配列の場合です
$e = [ 1, 2 ]; $f = [ 2, 1 ]; var_dump($e == $f); var_dump($e === $f);
false false

上の例を見た後では true になりそうに思うかもしれないですが false になります
PHPでは連想配列もただの配列は内部では連想配列です
ただの配列では キーも書くとこうなっています
$e2 = [ 0 => 1, 1 => 2 ]; $f2 = [ 0 => 2, 1 => 1 ]; var_dump($e === $e2); var_dump($f === $f2);
true true

$e$e2が一緒 $f$f2が一緒です
$e2$f2を比べてみると 順番変えても一緒にならないとわかると思います