Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象数组到javascript关联数组_Javascript_Php_Arrays_Json_Easyautocomplete - Fatal编程技术网

PHP对象数组到javascript关联数组

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"]=>

我有一个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"
  }
我需要将其转换为一个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)});