多次元配列として表されたデータがいくつかあります。これらのデータをOOアプリケーションに埋め込み、これらのデータに追加機能を提供するだけでなく、従来のランダムアクセスとイテレーターの両方を使用してデータにアクセスする方法も提供したいと思います(foreachを使用できるように)。つまり、多次元配列のラッピングクラスを実装したいと思います。
私がすでに試したこと:
I. ArrayAccess
これの問題は、サーバーがPHP 5.2.17を使用し&offsetGet()
てエラーを出すため、参照で戻ることができないことです。つまり、多次元要素アクセスを実装できません。
$obj[$key1][$key2] = $value;
現在、新しいPHPバージョンへのアップグレードはオプションではないことに注意してください
II。魔法の方法を使用する これは少し注意が必要ですが、変数をキーとして使用しようとすると問題が発生しました。例えば
$obj->$key1[$key2] = $value;
インタプリタは最初$key1[$key2]
に通知をスローして$key1の最初の文字を返すことを評価し、それを配列のキーとして使用します。私もこれを解決する方法がわかりません。ブラケットを使用して操作の優先順位を強制することを考えましたが、それは次の試みと同じ問題がありました。
III。単純なgetおよびset関数の使用 繰り返しますが、古いPHPです。私が書き込もうとすると泣きます:
$obj->get($key1)[$key2] = $value;
丸括弧で終わる式にインデックスを付ける方法がわからないためです。
失われたリゾートオプションはまだあります。アレイを公開し、OOをすべて一緒に忘れてください。しかし、そこに行く前に、これを行う他の方法が本当にないことを確認したいと思います。