2011-11-07 11 views
1

オブジェクト内の多次元配列から要素にアクセスしようとしています。たとえば、多次元配列を表す$ phoneという変数を持つクラスFooがあるとします。未知のキーでネストされた連想配列にアクセスする

$phone -> structure will look like 
Array { 
    "home" Array(1) {[0] = "555-1212"}, 
    "work" Array(2) {[0] = "555-1234", [1] = "555=5434"}, 
    "other" Array(1) {[0] = "555=9090"} 
} 

注:私たちは鍵を知っているとは思いません。

は私が

$foo->phone["home"][0] 

問題は、私は明示的にキーを知っているし、他の場所からそれらを引っ張っていないときに来る、すなわち、明示的なキーを与えることによって値にアクセスすることができます。

$object->$type[$subtype][0] 

が値を取得するが、私はエラーを取得し、それはdoesnの:$タイプ=「電話」、=「ホーム」$サブタイプ、と私は最初のエントリをしたい場合は たとえば、私が使用することを期待しますそれが配列だとは思わない。私はどこにエラーがあるのか​​分かりません。

次に、最下位レベルの配列に要素を追加します。私は、次のことがうまくいくと仮定しますが、しません:

array_push($object->$type[$subtype], $value) 

このmutidimensional配列は、私は、単一の入れ子構造のキーによって標識の電話番号を格納することが可能になります。これが問題を複雑にしている場合は、私に知らせてください。私がこの構造を選んだのは、キーがユーザーがカスタマイズできるものであるためです。

ありがとうございました。

+0

あなたが言うとき。 'キーはユーザーがカスタマイズするものであれば何でも構いません'、あなたはこの情報を提出するために使用するフォームでキーを設定できると言っていますか? –

+0

はい。ユーザーがキーを作成できる他の方法があります。たとえば、 "自宅ファックス"のようにしてから、番号を1つ追加します。これは、Appleのアドレス帳のように動作するように意図されています。私は、電話番号のためのカスタマイズされたフィールドを追加し、独自のキーで定義することができます。 – user1034603

答えて

1

$ object - > $ typeをそれ自身の変数として保存し、その変数にアクセスして配列に深く入ると、これはうまくいくと思います。

+0

それはそうしていないようです。詳細については、ここでは構造体を作成しようとしていますが、これも動作しません...フォーマットをお手伝いします。 while($ row = mysql_fetch_array($ result)){ $ type = $ this-> $ row ['type']; //このキーがオブジェクト配列に存在するかどうかを確認します if(!array_key_exists($ row ['title']、$ type)){ $ type [$ row ['title']] = array() ; } //オブジェクト配列 に値を追加する場合(IS_ARRAY($タイプ[$行[ '表題']])){ array_push($タイプ[$行[ '表題']は、$ R) } } ' – user1034603

+0

' $ type = $ row ['type']; '?それ以外の場合は、$ row ['type']を最初にvarに保存します。 '$ rowType = $ row ['type']; $ type = $ this-> $ rowType; ' –

+0

正しい方向にあるようです。配列には物が入っています。なぜ構造内の各レベルの変数を生成する必要がありますか?なぜ私は '$ this-> $ row ['type'] [$ row ['title']]'のようなことをすることができませんか? – user1034603

関連する問題