在php中嵌套json的简单方法

时间:2018-08-11 02:18:02

标签: php arrays json

应该很容易,但是我一直坚持下去。 使用缺少默认嵌套的Json输出从Mysql获取数据

$row->execute();
$item=array();
foreach($row as $rec)//foreach loop  
{   
    $testnab['Src']=$rec['src'];


array_push($item,$testnab);     


}

echo json_encode($item,JSON_PRETTY_PRINT);  

结果:

[ { "Src": "test1st" }, { "Src": "test3rd" } ]

我需要的输出是:

[{"0": { "Src": "test1st" }},{"0": { "Src": "test3rd" }}] 

它是非顺序的,“ 0”是恒定的

2 个答案:

答案 0 :(得分:1)

您可以通过使用$ testnab作为属性值创建一个对象来实现此目的:

$item=array();
foreach($row as $rec)//foreach loop  
{   
    $testnab['Src']=$rec['src'];
    $o = new StdClass;
    $o->{'0'} = $testnab;
    array_push($item,$o);     
}
echo json_encode($item);

输出:

[{"0":{"Src":"test1st"}},{"0":{"Src":"test3rd"}}]

答案 1 :(得分:1)

您可以将所有声明逻辑压缩为一行,并避免执行push调用。

将结果集行值嵌套在强制转换对象中。

代码:(Demo

$resultset = [
    ['src' => 'test1st'],
    ['src' => 'test3rd'],
];

foreach ($resultset as $row) {   
    $item[] = (object)[['Src' => $row['src']]];
}

echo json_encode($item);

输出:

[{"0":{"Src":"test1st"}},{"0":{"Src":"test3rd"}}]