PHPのarray_mergeではまる話

 久々にWebプログラミング。PHPにて。
 配列を連結する必要があり。関数とかは最小限しか知らないので、検索。array_mergeってのがあるのを知る。
 やってみる。
 うまくいった。
 しかし、レンタルサーバーにアップしてみると、エラーが出る。
 ローカルのテスト環境はPHP4、今回使用したレンタルサーバーはPHP5であった。
 複数のレンタルサーバーを契約しており、一部はPHP4のままなので、ローカルでの開発はPHP4でやっていた。普通なら、PHP4で作ったプログラムはPHP5環境でも動く。これで問題なかったのだが。
 まれに、PHP4ではうまくいくのに、PHP5で動かないことがある。
 で、array_mergeのドキュメントを読む。
 PHP4とPHP5では動作が異なることが判明。マージ対象となる変数が配列じゃないといけなくなったのだった。宣言なしで変数が使えるPHP的(うそ)なプログラミングをやってたのがあだとなったようだ。
 型キャストの使用でOK、みたいなことが書いてある。
 (array)$a みたいな感じにすればいい模様。しかし、既存のコードの書き換えが多いので、これは面倒。
 ということで、「$a=array();」みたいに最初に空の配列をつっこむことで解消。
 これなら、既存の部分にいちいt型キャストを指定する必要はない。言葉の使い方が違ってるかもだけど。
 っていうメモ。

コメント