PHP - 在foreach循环中将数据推送到数组

新手上路,请多包涵

我想实现以下数组格式:

 {
    "success": true,
    "results": [
      {
        "name"  : "Choice 1",
        "value" : "value1",
        "text"  : "Choice 1"
      },
      {
        "name"  : "Choice 2",
        "value" : "value2",
        "text"  : "Choice 2"
      }
    ]
}

但是,我正在使用 PHP 和 foreach 循环,从我的数据库中返回一些值:

 //Search for clients in our database.
$stmt = $dbh->prepare("SELECT * FROM customers");
$stmt->execute();
$showAll = $stmt->fetchAll();

然后我有了数组的第一部分和我的 foreach 循环:

 $data = array(
    "success" => false,
    "results" => array()
);

foreach ($showAll as $client) {
               $data_array[] =
                     array(
                     'name' => $client['name'],
                     'value' => $client['name'],
                     'text' => $client['name']
                );

}

以上仅输出:

 [
 {
   "name":"Choice 1",
   "value":"value 1",
   "text":"Choice 1"
 },
 {
   "name":"Choice 2",
   "value":"value2",
   "text":"Choice 2"
 }
]

所以它缺少我原始数组的顶部 - 但我想遍历每个数据库结果 "results": [ ... ]

原文由 oliverbj 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 310
2 个回答

尝试这个

$data = array(
  "success" => false,
  "results" => array()
);

foreach ($showAll as $client) {
  $data['results'][] = array(
    'name' => $client['name'],
    'value' => $client['name'],
    'text' => $client['name']
  );
}

$data['success'] = true; // if you want to update `status` as well
echo json_encode($data);

原文由 Farooq Ahmed Khan 发布,翻译遵循 CC BY-SA 3.0 许可协议

创建 $data_array 数组后,只需添加我在帖子中的几行。

在此处尝试此代码片段(带有示例输入)

 ini_set('display_errors', 1);
foreach ($showAll as $client)
{
    $data_array[] = array(
                'name' => $client['name'],
                'value' => $client['name'],
                'text' => $client['name']
    );
}
// add these lines to your code.
$result=array();
$result["success"]=true;
$result["results"]=$data_array;
echo json_encode($result);

原文由 Sahil Gulati 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏