実現したいこと
現在、PHP5.4.16環境で稼働中のシステムのphp7.4.33環境への移植作業を行っておりますが
「空の文字列変数から連想配列への暗黙の型変換」に関する動作の違いで結果に差異が出てしまっている箇所がありました。
こちらについてphpの設定やパッチ導入などで新環境での挙動を旧環境に合わせることはできないかと調査を行っておりますがいまだ解決に至っておりません。
発生している問題・分からないこと
旧環境(PHP5.4.16)での結果
string(0) ""
array(2) { ["A"]=> string(3) "abc" ["B"]=> string(3) "def" }
新環境(php7.4.33)での結果
string(0) ""
string(1) "d"
空の文字列変数から連想配列への暗黙の型変換が行われなくなっているようです。
なお、初期化部分をArray()または[]に置き換えることで解決することは確認済です。
該当のソースコード
PHP
1// 連想配列初期化2$array1 = "";3 4var_dump( $array1 );5 6 7// キー名を指定して値を代入8$array1['A'] = "abc";9$array1['B'] = "def";10 11var_dump( $array1 );
試したこと・調べたこと
上記の詳細・結果
コードの書き換えるでの解決方法は判明したのですが一箇所づつ修正・確認していくのは時間的に厳しいため、phpの設定やパッチ導入などで新環境での挙動を旧環境に合わせる方法を引き続き探しております。
ご存じの方がいらっしゃいましたらお知恵をお借りしたくよろしくお願いいたします。
補足
旧環境:PHP 5.4.16
新環境:PHP 7.4.33
0 コメント