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