应该很容易,但是我一直坚持下去。 使用缺少默认嵌套的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”是恒定的
答案 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"}}]