簡體   English   中英

PHP對象數組到javascript關聯數組

[英]PHP Object array to javascript associative array

我有一個PHP對象數組,如下所示:

array(223) {
  [0]=>
  object(stdClass)#5 (9) {
    ["id"]=>
    string(2) "10"
    ["name"]=>
    string(10) "Cyclops"
    ["address"]=>
    string(13) "GSDG"
  }
  [1]=>
  object(stdClass)#6 (9) {
    ["id"]=>
    string(2) "11"
    ["name"]=>
    string(11) "Professor X"
    ["address"]=>
    string(8) "XX"
  }

我需要將其轉換為具有以下格式的名稱和ID的javascript數組:

var characters = {
    data: [{
            "name": "Cyclops",
            id: 10
        },
        {
            "name": "Professor X",
            id: 11
        }
    ]
}

這是我嘗試過的:

首先,我將PHP數組轉換為javascript對象,然后使用for循環將每個數組的詳細信息推送至javascript對象:

var js_data = <?php echo json_encode($chars) ?>;
var characters = [];

for (var i = 0; i < js_data.length; i++) {
    characters.push({
        data: js_data[i]
    })
}

但這會導致對象陣列,每個對象都具有“數據”屬性。 這是testVariable的console.log:

0: {…}
​​​
data: Object { id: "10", name: "Cyclops", … }
​​​
__proto__: Object { … }
​​
1: {…}
​​​
data: Object { id: "11", name: "Professor X", … }

我該如何解決?

這不是最困難的任務,因為您幾乎可以擁有所需的格式。 首先,我必須補充一點,您可能甚至不必過濾出地址字段,因為插件可能會完全忽略它。 如果是這種情況,您可以簡單地這樣做

var characters = <?php json_encode(['data' => $chars]); ?>;

如果確實需要過濾出地址字段,則可以使用array_map

$chars = array_map(function($item) {
    // at this point, you don't need an object, as json_encode do the
    // same for objects and associative arrays
    return [
        "id" =>$item->id,
        "name" => $item->name
    ];
}, $chars);

您可以將最后一個javascript JSON數組轉換為

var characters = {
data: [{
        "name": "Cyclops",
        id: 10
    },
    {
        "name": "Professor X",
        id: 11
    }
]

}

通過使用您的PHP代碼結果

0: {…}

數據:對象{ID: “10”,名稱: “獨眼巨人”,...} :對象{...} 1:{...}數據:對象{ID: “11”,姓名:“ X教授”,…}

使用need將下面的最終結果存儲到js變量中,例如,如果結果為,則可以使用forEach將變量推入另一個js數組中

var a=[{data:{id:"10",name:"Cyclops"}},{data:{id:"11",name:"Professor X"}}]

然后使用

var b=[]
a.forEach(x=>{b.push(x.data)});

它會得到以下結果

(2)[{…},{…}] 0:{id:“ 10”,名稱:“ Cyclops”} 1:{id:“ 11”,名稱:“ Professor X”}長度:2 proto :Array( 0)

希望對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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