[英]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.