$key1 = 1;
$key2 = 1;
$array[$key1][$key2] = 'hi';
在javascript中我试过这个:
key1 = 1;
key2 = 1;
var array = new Array();
array[key1][key2] = 'hi';
但它没有用。我怎样才能在javascript中做同样的事情?
答案 0 :(得分:6)
你的问题是你需要在赋值之前实例化内部数组
var key1 = 1;
var key2 = 1;
var array = [];
array[key1]=[];
array[key1][key2] = 'hi';
或者你可以一起做到这一切:
var array=[['hi']]
此外,除非您要更新现有元素,否则应避免分配给特定索引。上面的第一个示例将自动添加元素
array[0]=undefined;
如果你想使用特定的键,而不仅仅是索引,你应该使用字典或对象(字典和对象与javascript是一回事)
答案 1 :(得分:4)
在尝试将属性key1
分配给它时,数组的key2
属性未定义。在开始为其分配值之前,您需要实际指示array[key1]
是一个数组。
例如:
array[key1] = [];
array[key1][key2] = 'hi';
答案 2 :(得分:2)
JavaScript存在问题,即您的数组的key1
和key2
维度未定义。要解决此问题,可以进行以下更改:
var key1 = 1;
var key2 = 1;
// define "array" as an empty array:
var array = [];
// define "array[key1] as an empty array inside that array
// (your second dimension):
array[key1] = [];
array[key1][key2] = 'hi';
PHP做了一些魔术 - 你可以简单地提供2个密钥而PHP“知道你的意思”并定义$key1
和$key2
维度而不考虑它。请参阅:PHP: arrays:如果$ arr尚不存在,则会创建它,因此这也是创建数组的另一种方法。要更改某个值,请使用其键为该元素指定一个新值。
JavaScript要求您更明确地创建数组。
答案 3 :(得分:1)
你可以找到整洁的实现。例如,here是一种方法,它是为行创建数组的函数,然后为每列创建一个数组(可以用其他方式进行帮助,但是......)
var sDataArray=MultiDimensionalArray(7,2);
//alert(sDataArray[0][0]);
function MultiDimensionalArray(iRows,iCols)
{
var i;
var j;
var a = new Array(iRows);
for (i=0; i < iRows; i++)
{
a[i] = new Array(iCols);
for (j=0; j < iCols; j++)
{
a[i][j] = "";
}
}
return(a);
}
问题是,你就像PHP那样无法处理数组。必须按照它们的实际方式对待它们:一组数组(数组(数组(数组)......))。 祝你好运。