配列を代入すると値がコピーされる言語はいくつか存在する

てゆうか配列の入った変数を他の変数に代入すると値がコピーされるのもワロスなポイント

PHPの配列はCの構造体みたいな扱いなんだろうか?

いずれにしてもそんな仕様のメジャーな言語は見たことが無い

Adaの場合、配列のAssignmentは値のコピーとなる。C言語と違い配列のポインタ(AdaのAccess)と配列が明確に区別されるため、混乱が生じにくい。

with Ada.Text_IO; use Ada.Text_IO;

procedure Array_Test is
   type Sample_Array_Type is array (1 .. 3) of Integer;
   From_Array : Sample_Array_Type;
   To_Array   : Sample_Array_Type;
begin
   From_Array := (1, 2, 3);
   To_Array   := From_Array;
   From_Array := (others => 0);

   for I in Sample_Array_Type'Range loop
      Put_Line(Integer'Image(From_Array(I)));
   end loop;

   for I in Sample_Array_Type'Range loop
      Put_Line(Integer'Image(To_Array(I)));
   end loop;
end Array_Test;
% ./array_test
 0
 0
 0
 1
 2
 3

Fortranなども配列を=で代入すると値がコピーされようだ。