- 締切済み
配列のマージについて
配列のキーを保ったまま配列をマージしたいのですが、phpのリファレンス(http://www.php.net/manual/ja/function.array-merge.php)にある通り'+' 演算子を使うと、以下のエラーが出ます。 Fatal error: Unsupported operand types コードは以下の通りです: $values['taxonomy']=$values['taxonomy'] + $t_arr; 問題なくマージできれば、以下のようになります: Array ( [taxonomy] => Array ( [tags] => Array ( [1] => , IFIs general, Alternatives to the IFIs, Civil Society, International ) ) [2] => 342 ) (分かりにくいですが、['taxonomy']と[2]が同じ階層にあります) 理解に苦しむのは、処理するデータ量が少ない(20配列程度)ときにはこのエラーが起きずに配列がマージできるのですが、データ量が多くなるとエラーが起きるようなのです。(要因は他にあるのかもしれませんが、今のところデータ量以外に要因らしきものは見あたりません。個人的にはデータ量が要因というのは考えにくいとは思っています) 原因・解決法などご存じでしたらお教えいただけると幸いです。 (環境:PHP 5.2.4, Apache 2, Debian Sarge)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- php504
- ベストアンサー率42% (926/2160)
+の左右で型が違うときに出るエラーと思いますが if (!is_array($values['taxonomy'])) { echo 'ERROR $values[\'taxonomy\'] is not array'; print_r($values['taxonomy']); } if (!is_array($t_arr)) { echo 'ERROR $t_arr is not array'; print_r($t_arr); } $values['taxonomy']=$values['taxonomy'] + $t_arr; のようなエラー処理を入れてみたらどうでしょう
お礼
アドバイスありがとうございます。 このコード以下にある処理では、必ず'+'の左右の型が文字列と整数になる必要があります(これを変更することはできません)。そのため、エラーを表示して処理を停止することができません。 これを回避してマージする方法を探しています。
補足
アドバイスありがとうございます。頂いたアドバイスに直接影響するものではありませんが、提示した配列の内容が間違っていたのでここで訂正します: [taxonomy] => Array ( [tags] => Array ( [1] => Conditionality, Financial architecture, IFIs general, IMF, Intern ational ) [2] => 343 ) (分かりにくいですが、['tags']と[2]が同じ階層にあります)