
[英]PHP Multidimensional Associative Array to JS Object Using json_encode()
[英]multidimensional json encoded associative array php to JS
嗨,最初我的数组看起来像这样
的PHP
$results = array(
"banana" => $bananavalue,
"apple" => $applevalue,
);
echo json_encode($results);
JS
var fruits = [];
$.ajax({
type: "POST",
url: "actions/MYphp.php",
data: PassArray,
dataType: 'json',
beforeSend: function (html) {
// alert(html);
},
success: function (html) {
var obj = html;
// Now the two will work
$.each(obj, function (key, value) {
fruits.push([key, value]);
});
但是我想根据以下内容将其更改为多维的水果和蔬菜:
results = array(
"fruit"=>array(
"banana" => $bananavalue,
"apple" => $applevalue
),
"vegetables"=>array(
"lettuce" => $lettuce,
"cabbage" => $cabbage
)
);
echo json_encode($results);
问题是如何在Javascript中的每个数组中循环并将其分配给两个数组(水果和蔬菜)。
我努力了
$.each(obj['fruit'], function(key, value) {
fruits.push([key, value]);
});
但这没有用。
与PHP不同,javascript没有关联数组。
JSON编码的PHP关联数组可解码为javascript纯对象。
要使用javascript访问数据,请执行以下操作:
$.ajax({
type: "POST",
url: "actions/MYphp.php",
data: PassArray,
dataType: 'json',
success: function(obj) {
//do whatever is required with obj.fruits and obj.vegetables here
};
});
通常,您不希望将obj
或obj.fruits
或obj.vegetables
分配给外部作用域中的成员,因为在ajax响应到达之前它们obj.vegetables
用。 通常,您将在success
范围(以及从中调用的函数)中使用obj.fruits
和obj.vegetables
进行所有必要的obj.fruits
。
与在PHP中嵌套2个循环的方式类似。
$.each(obj, function(keyOfOuterArray, innerArray) {
// keyOfOuterArray equals to vegetables, fruit
console.log(keyOfOuterArray);
$.each(innerArray, function(keyOfInnerArray, valueOfInnerArray) {
//valueOfInnerArrayis your inner array value
console.log(keyOfInnerArray, valueOfInnerArray);
});
});
要回答您的问题,请执行以下操作:
var myNewObj = {};
$.each(obj, function(keyOfOuterArray, innerArray) {
$.each(innerArray, function(keyOfInnerArray, valueOfInnerArray) {
myNewObj[keyOfOuterArray][keyOfInnerArray] = valueOfInnerArray;
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.