2011-11-07 92 views
1

我想從對象中的多維數組訪問元素。例如,我們假設有一個Foo類有一個名爲$ phone的變量,代表多維數組。訪問使用未知鍵的嵌套關聯數組

$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] 

獲得的價值,但我得到一個錯誤,它不不認爲這是一個數組。我不確定錯誤在哪裏。

接下來就是將元素添加到最低級別的數組中。我想下面的工作,但不會:

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

這mutidimensional陣列,讓我來存儲密鑰在一個嵌套結構標記的電話號碼。如果這太複雜了,請告訴我。我選擇這種結構的原因是因爲這些鍵可以是用戶定製的任何東西。

謝謝。

+0

當你說; '鑰匙可以是用戶定製的任何東西',你是說他們用來提交這些信息的形式允許他們設置鑰匙嗎? –

+0

是的。會有一些其他方法允許用戶創建密鑰。例如「家庭傳真」,然後爲其添加一個或多個數字。它意味着像Apple的地址簿一樣工作。我可以爲電話號碼添加自定義字段並通過自己的密鑰進行定義。 – user1034603

回答

1

我相信,如果您將$ object - > $ type保存爲自己的變量,那麼這將起作用,然後訪問該變量以更深入數組。

+0

這似乎並沒有做到。欲瞭解更多信息,這裏是我如何嘗試創建結構,這也是行不通的...抱歉的格式。 'while($ row = mysql_fetch_array($ result)){ $ type = $ this - > $ row ['type'];如果(!array_key_exists($ row ['title'],$ type)){ $ type [$ row ['title']] = array()檢查此對象是否存在於對象數組 中, ; ($ type ['title')])){ array_push($ type [$ row ['title']],$ r) } }' – user1034603

+0

不應該是'$ type = $ row ['type'];'?否則將$ row ['type']保存到一個var:'$ rowType = $ row ['type']; $ type = $ this - > $ rowType;' –

+0

看起來這是正確的方向。數組中有東西。爲什麼我需要爲結構中的每個級別生成一個變量?爲什麼我不能像'$ this - > $ row ['type'] [$ row ['title']]''做些什麼? – user1034603