【发布时间】:2019-11-25 18:16:41
【问题描述】:
我在 JS 中有一个大型多维数组对象,我试图使用 Ajax 将其传递给 PHP。一些数组值的键是写入数组test[key],在 PHP 中我希望它们被读取为test => array([key] => 123)。请注意,我正在使用 Wordpress。
工作示例
JS:
var args = {
'action' : 'save',
'test[key1]' : ['123', 'abc']
}
var request = $.ajax({
url: settings.get('ajaxurl'),
data: args,
type: 'post',
success: function(response) { // }
});
PHP print_r 输出:
[action] => save
[test] => Array
(
[key1] => Array
(
[0] => 123
[1] => 234
)
)
但是,我想在对象的第二级发送所有 test[key1](以及更多数据)。我有很多数据,需要对它们进行相应的分组。
无效示例
JS:
// simple changing the args
var args = {
'action' : 'save',
'data' : {
'test[key1]' : ['123', 'abc']
}
}
PHP print_r 输出:
[action] => save
[data] => Array
(
[test[key1] => Array
(
[0] => 123
[1] => 234
)
)
这似乎真的很难解释 - 但是当 PHP 不在数组的顶层时,它似乎没有正确解析数组键。我做错了什么//有没有办法解决这个问题?如果需要,我可以提供更多见解,我试图尽可能清楚地说明这一点。
当打印数据数组的键时,它会打印它们而不是最终的]。所以它显示test[key1 而不是我所期望的。也许他们在某个地方被剥光了?
【问题讨论】:
-
PHP 做得对,也许你是那个有点困惑的人
-
@RiggsFolly 我编辑了我的标题 - 我并不想责怪 PHP,我绝对认为我做错了什么。
-
在
args中,您试图创建2 个具有相同名称test[key1]的属性,这在任何语言中都是不合法的,是吗? -
@RiggsFolly 好吧,它只会覆盖它......但你是对的 - 在试图简化我的代码时,我确实犯了那个错误。我对其进行了编辑以反映我实际在做什么..