12

php新手。我正在尝试以名称-值对的形式将 JSON 数据发送到前端。我尝试了一个我在这里得到的示例 以下是我的代码片段,它以 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"}]

请指教。

4

6 回答 6

23

$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);
于 2013-03-25T15:40:42.967 回答
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);
于 2013-03-25T15:55:10.000 回答
2

尝试创建一个对象数组

$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);
于 2013-03-25T15:45:24.340 回答
2

您的列表数组仅存储 1 行。尝试这个:

while ($stmt->fetch()) {
    $list[] = array('id' => $fid, 'name' => $fname);
}

希望这可以帮助!

于 2013-03-25T15:42:09.180 回答
0

看看这是否适合你:

$n = 0;
while($stmt->fetch()){
    $list[$n] = array('id' => $fid, 'name' => $fname);
    $n++;
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

您正在用数组覆盖$list多次。

于 2013-03-25T15:43:14.573 回答
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":[]

         }
     ]

  }
于 2016-02-23T17:50:15.377 回答