php新手。我试图将JSON数据发送到名称 - 值对的前端。我尝试了一个示例,我得到here以下是我的代码片段,它以JSON名称值格式发送数据。
while($stmt->fetch()){
$list = array('id' => $fid, 'name' => $fname);
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);
我在前端得到了这个
Object {id: 12, name: "Manisha"}
问题是我期待一组对象。以上值是从SQL查询获取的最后一个值。我应该对这段代码做些什么改动,以便我可以得到一个对象数组。像
这样的东西[{"id":"1","name":"Kumari"}, {"id":"2","name":"KM"}, {"id":"3","name":"Manisha"}]
请建议。
答案 0 :(得分:17)
$ list需要是一个数组,你只需将项目推送到它就像在这段代码中一样:
$list = array();
while($stmt->fetch()){
$list[] = array('id' => $fid, 'name' => $fname);
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);
您还可以使用方法fetch_all()一次获取所有行,而不是使用循环进行迭代。虽然在这个例子中你会得到你选择的所有字段,而不仅仅是id和name。
$list = $stmt->fetch_all();
$stmt->free_result();
$stmt->close();
echo json_encode($list);
答案 1 :(得分:3)
您应该尝试在数组末尾推送每个对象,例如使用array_push
(相当于$array[] = $data
添加到堆栈中,但会让您更具可读性)。
$list=array(); //instantiate the array
while($stmt->fetch()){
$data = new stdClass(); // create a new object
$data->id=$fid;
$data->name=$fname;
array_push($list,$data); // push object to stack array
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);
答案 2 :(得分:2)
您的列表数组仅存储1行。试试这个:
while ($stmt->fetch()) {
$list[] = array('id' => $fid, 'name' => $fname);
}
希望这有帮助!
答案 3 :(得分:0)
看看这是否适合你:
$n = 0;
while($stmt->fetch()){
$list[$n] = array('id' => $fid, 'name' => $fname);
$n++;
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);
您使用数组多次覆盖$list
。
答案 4 :(得分:0)
尝试创建一个对象数组
$list = array();
while($stmt->fetch()) {
// create an object
$datum=new stdClass();
$datum->id=$fid;
$datum->name=$fname;
$list[] = $datum;
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);
答案 5 :(得分:0)
假设我们有这个文件结构,里面没有特定的对象:
{
"Subjects" : []
}
//Get your Json file and decode it
$json = file_get_contents('CdStore/Pagetest.json');
$json_data = json_decode($json,true);
//Specifiy your Objects like this
$NewArray= array( 'Mathematics' => array(),'Physics' => array());
//Push the new Objects
array_push($json_data['Pagess'],$NewArray);
//Then encode to json
$array = json_encode($json_data);
//If you want to get the preview before saving
print_r($array);
//Save your file
file_put_contents('CdStore/Pagetest.json', json_encode($json_data));
结果你有:
{"Subjects":
[
{
"Mathematics":[],
"Physics":[]
}
]
}