foreach循环中的PHP JSON编码

use*_*124 3 php json

我正在尝试生成以下JSON数据:

[
    {
        "ID": "A1000",
        "name": "John Simpson",
        "serialID": "S41234",
        "tagID": "ABC6456"
    },  
    {
        "ID": "B2000",
        "name": "Sally Smith",
        "serialID": "B5134536",
        "tagID": "KJJ451345"
    },
    {
        "ID": "A9854",
        "name": "Henry Jones",
        "serialID": "KY4239582309",
        "tagID": "HYG452435"
    }
]
Run Code Online (Sandbox Code Playgroud)

从PHP foreach循环中看起来像这样:

foreach($records as $record) {

        $ID = $record->getField('propertyID');
        $name = $record->getField('assignedName');
        $serialID = $record->getField('serial');
        $tagID = $record->getField('tag');

    }
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

$arr = array('ID' => $ID, 'name' => $name, 'serialID' => $serialID, 'tagID' => $tagID);
Run Code Online (Sandbox Code Playgroud)

它适用于循环中的每个记录,但无法计算出将它们连接成一个JSON数据字符串的语法?

Ana*_*Die 5

问题: -$arr每次都在foreach()循环中覆盖你的变量.这会导致问题.

解决方案: -而不是覆盖,而是将值分配给数组,如下所示: -

$arr = []; //create empty array

foreach($records as $record) {

    $arr[] = array(
                'ID' => $record->getField('propertyID');
                'name' => $record->getField('assignedName');
                'serialID' => $record->getField('serial');
                'tagID' => $record->getField('tag')
            );//assign each sub-array to the newly created array
} 
echo json_encode($arr);
Run Code Online (Sandbox Code Playgroud)