PHP对象数组到javascript关联数组
我有一个PHP对象数组,如下所示:PHP对象数组到javascript关联数组,javascript,php,arrays,json,easyautocomplete,Javascript,Php,Arrays,Json,Easyautocomplete,我有一个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"]=>
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"
}
我需要将其转换为一个javascript数组,其名称和id如下:
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]
})
}
如何解决这个问题?并不是最难的任务,因为您几乎拥有了所需的格式。首先我要补充的是,你甚至不必过滤掉地址字段,因为插件可能会完全忽略它。如果是这样的话,你可以这么做
var characters = <?php json_encode(['data' => $chars]); ?>;
您可以将最后一个javascript JSON数组转换为
var characters = {
data: [{
"name": "Cyclops",
id: 10
},
{
"name": "Professor X",
id: 11
}
]
}
通过使用PHP代码结果
0: {…}
数据:对象{id:“10”,名称:“Cyclops”,…}
proto:对象{…}
1: {…}
数据:对象{id:“11”,名称:“X教授”,…}
使用“需要”将下面的最终结果存储到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”,名字:“独眼巨人”}
1.
:
{id:“11”,姓名:“X教授”}
长度
:
2.
proto
:
数组(0)
我希望它能帮助您不可能,JavaScript不支持关联数组。不过,示例中的目标对象是可能的。试试这个
json\u encode($chars,true)
@Teemu:我有一个问题,我想要的是哪怕是一个关联数组的目标格式。它适用于easyautocomplete插件。它是JSON表示吗?不,它不是一个关联数组,至少与PHP中该术语的含义不同。它是一个JavaScript对象,而不是一个“JSON对象”。正如Jacek所说,在客户端将JSON字符串转换为JavaScript对象是一项非常简单的任务。我仍然需要找出如何将我的数据转换为easyautocomplete插件的格式:(当我这样做时,似乎没有输入characters变量。console.log对characters
变量不返回任何内容。这是您想要的吗?我已经添加了相关的html/js/php部分,在底部,console.log和var_转储输出。在上面的粘贴中,忽略轻微的id名称不匹配,我已经修复了它。可以吗?)提供PHP数组变量示例
var a=[{data:{id:"10",name:"Cyclops"}},{data:{id:"11",name:"Professor X"}}]
var b=[]
a.forEach(x=>{b.push(x.data)});