我正在寻找一种在 JavaScript 中创建单个多维关联数组的解决方案。
我所拥有的:我有一个使用 php 访问的 mysql 数据库,并且有一个包含单个记录中所有字段(键、值对)的数组。每条记录中有超过 30 个字段,因此我正在寻找动态解决方案。 在html编码中,有一个表单,用于更新表中的特定记录。我在每个输入上使用函数调用来按键和值填充 JavaScript 数组。这些键与 php 数组中的键相同。 在函数中,我对 php 数组执行 json_encode 调用,以提取“旧”数据,使其可供 JavaScript 访问。
什么有效:我能够根据来自输入函数调用的新数据创建动态 JavaScript 关联数组。我在每次调用该函数后都使用警报对此进行了测试。
我需要什么:一种将 javascript 数组更改为多维数组的方法,拉入旧值并将其添加到与原始键绑定(bind)的新数组中。
这有效:
var changes={};
function change(key,value) {
changes[key[value]]=value;
for (key in changes) {
alert('key: '+key+'... value: '+changes[key]);
}
}
这符合我正在寻找的内容:
var changes={};
function change(key,value) {
var oldInfo = eval(<? echo json_encode($oldInfo); ?>); //this from the php array
changes[key[newValue]]=value;
changes[key[oldValue]]=oldInfo[key];
for (key in changes) {
alert('key: '+key+'... value: '+changes[key[newValue]]);
}
}
有人能指出我正确的方向吗?
澄清一下:
我的php数组$oldInfo
保存表中的旧信息,例如:
{fName=>"charles",lName=>"madison", etc.}
JavaScript 数组保存新信息:
{fName=>"Charlie",lName=>"Madison", etc.}
我想要一个新的多维数组 (PHP)(或 JavaScript 中的对象),如下所示:
{fName=>{"charles","Charlie"}, lName=>{"madison","Madison"}, etc.}
lName 和 fName 将是与 PHP 数组和 JavaScript 对象同义的关键字段。
最佳答案
确实不清楚你想要什么,但你的逻辑存在一些严重缺陷:
-
var changes={}; ///this one way of declaring array in javascript
不,不是。这是一个对象,与数组有很大不同。
-
eval(<? echo json_encode($oldInfo); ?>);
您不需要
eval
这里。json_encode
的输出是 JSON,它是 JavaScript 的一个子集,可以简单地执行。 -
changes[key[value]]=value;
这是完全错误的,而且仍然是一维数组。假设
key
是一个数组,您所做的就是将键/值反转到一个新数组中。如果 key 之前看起来像这样...'a' => 1 'b' => 2 'c' => 3
...然后
changes
之后将如下所示:1 => 'a' 2 => 'b' 3 => 'c'
对于多维数组,您需要两个键。你会写类似
changes[key1][key2] = value
. 您的变量命名错误。您应该永远看到这样的行:
key[value]
。那是倒退了。 键位于[]
之间,值位于=
的另一侧。它应该是这样的array[key] = value
.
回复:您的澄清:
这不起作用:{fName=>{"charles","Charlie"},...}
。你混淆了数组和对象;数组使用方括号和隐式数字键(例如 ["charles", "Charlie"]
),而对象可以像关联数组一样处理 {key1: "value1", key2: "value2"}
语法。
您需要一个数组,其中每个键都是属性的名称,每个值都是包含旧值和新值的数组。
我认为您想要的实际上非常简单,假设您传递给函数的“值”是新值。
var changes = {};
var oldInfo = <?= json_encode($oldInfo) ?>;
function change(key, value) {
changes[key] = [ oldInfo[key], value ]
}
关于javascript - 从 2 个数组创建新的多维关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418863/