这看起来很简单,但我无法理解。
在PHP中,我可以这样做:
$number_children[reference_number - 1][$key] = value;
在Javascript中,我需要做同样的事情:在关联数组中设置一个值,该数组在普通数组中。
我试过这个:
number_children[reference_number - 1][key] = $(this).val();
这似乎不起作用。设置此值的简单方法是什么?
感谢您提前提供任何帮助。
答案 0 :(得分:2)
您是否正在初始化阵列?:
number_children = [];
number_children[reference_number - 1] = {};
number_children[reference_number - 1][key] = $(this).val();
也许jsFiddle会帮助显示问题。
答案 1 :(得分:1)
在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();
答案 2 :(得分:0)
JavaScript中没有关联数组这样的东西。
在PHP中,您只有数组,可以是数字,关联或混合。在JavaScript中,您有数组或对象。 JavaScript中的数组不是关联的。
如果number_children
是一个对象数组,那么你的代码就完全没了问题。这意味着如果这是包含对象的数组,那么在您的示例中,该对象又具有名为key
变量值的属性。
答案 3 :(得分:0)
tl; dr 发布实际问题代码(使用最少的必需上下文)包括任何错误消息和/或[意外]症状。
正如minitech所说:代码没有“明显”错误。
无论如何,我只是学会(TM)PHP has some form of auto-vivification。 JavaScript绝对零自动生成。
因此,
$number_children[reference_number - 1][$key] = value;
假设$number_children
和$number_children[x]
应在PHP中工作
由于JS 不这样工作,那么根据SpoonNZ或Sergio Tulentsev的答案,在使用[]运算符之前必须对象/数组显式创建 即可。 (参见他们的答案)。
快乐的编码。