すいません。マニュアルをよく読めば書いてあることです。
(array)の挙動を確認します。
- 文字列から配列に展開されるか?
- 配列は二重配列になるか?
phpのマニュアル
// 配列と文字は異なる値です
var_dump(["a"] === "a"); // false
// 文字が配列に変換され一致します
var_dump(["a"] === (array)"a"); // true
// 元から配列なら変換されません
// 配列で囲まれるわけではありません
// 型の変換なので、配列型は配列型のままでした
var_dump(["a"] === (array)["a"]); // true
// 配列と文字列なので当然異なる値です
var_dump(["a", "b", "c"] === "abc"); // false
// もしかして複数文字は配列に展開される? ["a", "b", "c"]
var_dump(["a", "b", "c"] === (array)"abc"); // false
// そんなわけありません。
// c言語のchar型の配列と間違っていました。
// 文字列を配列にキャストすると項目が1つの配列になりました。
var_dump(["abc"] === (array)"abc"); // true
// 元から配列なら変換されません
var_dump(["a", "b", "c"] === (array)["a", "b", "c"]); // true