簡體   English   中英

多維JSON編碼的關聯數組php到JS

[英]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
    };
});

通常,您不希望將objobj.fruitsobj.vegetables分配給外部作用域中的成員,因為在ajax響應到達之前它們obj.vegetables用。 通常,您將在success范圍(以及從中調用的函數)中使用obj.fruitsobj.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM