[英]Set associative array value in array
這看起來很簡單,但我無法弄清楚。
在PHP中,我可以執行以下操作:
$number_children[reference_number - 1][$key] = value;
在Javascript中,我需要這樣做:在關聯數組中設置一個值,該數組在普通數組中。
我試過這個:
number_children[reference_number - 1][key] = $(this).val();
這似乎不起作用。 設置此值的簡單方法是什么?
在此先感謝您的幫助。
你在初始化數組嗎?:
number_children = [];
number_children[reference_number - 1] = {};
number_children[reference_number - 1][key] = $(this).val();
也許jsFiddle將有助於顯示問題。
在Javascript數組和“關聯數組”是不同的。 事實上,Javascript人不使用術語“關聯數組”,他們稱之為“對象”(或“哈希”)。
所以,你可以這樣做:
number_children[reference_number - 1] = {};
number_children[reference_number - 1][key] = $(this).val();
但是,當您嘗試迭代它時,由於length
未設置,這會產生意外結果:
number_children[reference_number - 1] = [];
number_children[reference_number - 1][key] = $(this).val();
JavaScript中沒有關聯數組這樣的東西。
在PHP中,您只有數組,可以是數字,關聯或混合。 在JavaScript中,您有數組或對象。 JavaScript中的數組不是關聯的。
如果number_children
是一個對象數組,那么你的代碼就完全沒了問題。 這意味着,如果這是包含對象的數組,則該對象又在示例中具有名為key
變量的值的屬性。
tl; dr發布實際問題代碼(包含最少的必需上下文), 包括任何錯誤消息和/或[意外]症狀。
正如minitech所說:代碼沒有“明顯”錯誤。
無論如何,I Just Learned(TM)認為PHP具有某種形式的自動生存 。 JavaScript的自動生存率絕對為零 。
從而,
$number_children[reference_number - 1][$key] = value;
應該在PHP中工作,假設$number_children
和$number_children[x]
:
由於JS 不能像這樣工作,那么根據SpoonNZ或Sergio Tulentsev的答案, 必須在使用[]運算符之前顯式創建對象/數組 。 (參見他們的答案)。
快樂的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.