使用 mysql 数据循环填充 PHP 关联数组
Populate PHP associative array using loop with mysql data
我正在创建简单的 PHP 用于将数据输出到 apexcharts javascript 图表。为了使 apexcharts 可用输出,我需要提供图表的 x 和 y 值 JSON。在代码下面,我写了输出预期的 JSON.
$data_arr = array();
global $mysqli_conn;
$result = $mysqli_conn->query("sql");
$sql_out = array();
$sql_out = $result->fetch_all(MYSQLI_ASSOC);
$num_rows = mysqli_num_rows($result);
if ($num_rows < 1){
echo "zero";
}else{
foreach($sql_out as $item) {
$data_arr['x'][] = $item['time'];
$data_arr['y'][] = $item['status_code'];
}
}
$test_arr = array(
array(
"name"=>"lock",
"data"=>array($data_arr),
)
);
echo json_encode($test_arr);
我的预期 json 输出如下所示
[
{
"name": "lock",
"data": [
{
"x": "2019-05-30 07:53:07",
"y": "1470"
},
{
"x": "2019-05-29 07:52:27",
"y": "1932"
}
]
}
]
但是当我从我的代码中请求数据时,我得到的是这样的东西
[
{
"name": "lock",
"data": [
{
"x": [
"2019-05-30 07:53:07",
"2019-05-29 07:52:27",
"2019-05-26 15:46:56",
"2019-05-25 07:39:24"
],
"y": [
"1470",
"1932",
"1940",
"1470"
]
}
]
}
]
如何从 PHP 代码创建我预期的 JSON 结果?。
您正在单独创建它们 space。当您声明并推送它们时,将它们放在一个容器中:
foreach ($sql_out as $item) {
$data_arr[] = array(
'x' => $item['time'],
'y' => $item['status_code']
);
}
当你这样做时:
$data_arr['x'][] = $item['time'];
$data_arr['y'][] = $item['status_code'];
它们位于不同的容器中,x 和 y 容器,因此您得到的格式错误,就像您显示的那样。
当您将它们声明为:
$data_arr[] = array(
'x' => $item['time'],
'y' => $item['status_code']
);
你基本上是在告诉将整个子批次一起推送。
我正在创建简单的 PHP 用于将数据输出到 apexcharts javascript 图表。为了使 apexcharts 可用输出,我需要提供图表的 x 和 y 值 JSON。在代码下面,我写了输出预期的 JSON.
$data_arr = array();
global $mysqli_conn;
$result = $mysqli_conn->query("sql");
$sql_out = array();
$sql_out = $result->fetch_all(MYSQLI_ASSOC);
$num_rows = mysqli_num_rows($result);
if ($num_rows < 1){
echo "zero";
}else{
foreach($sql_out as $item) {
$data_arr['x'][] = $item['time'];
$data_arr['y'][] = $item['status_code'];
}
}
$test_arr = array(
array(
"name"=>"lock",
"data"=>array($data_arr),
)
);
echo json_encode($test_arr);
我的预期 json 输出如下所示
[
{
"name": "lock",
"data": [
{
"x": "2019-05-30 07:53:07",
"y": "1470"
},
{
"x": "2019-05-29 07:52:27",
"y": "1932"
}
]
}
]
但是当我从我的代码中请求数据时,我得到的是这样的东西
[
{
"name": "lock",
"data": [
{
"x": [
"2019-05-30 07:53:07",
"2019-05-29 07:52:27",
"2019-05-26 15:46:56",
"2019-05-25 07:39:24"
],
"y": [
"1470",
"1932",
"1940",
"1470"
]
}
]
}
]
如何从 PHP 代码创建我预期的 JSON 结果?。
您正在单独创建它们 space。当您声明并推送它们时,将它们放在一个容器中:
foreach ($sql_out as $item) {
$data_arr[] = array(
'x' => $item['time'],
'y' => $item['status_code']
);
}
当你这样做时:
$data_arr['x'][] = $item['time'];
$data_arr['y'][] = $item['status_code'];
它们位于不同的容器中,x 和 y 容器,因此您得到的格式错误,就像您显示的那样。
当您将它们声明为:
$data_arr[] = array(
'x' => $item['time'],
'y' => $item['status_code']
);
你基本上是在告诉将整个子批次一起推送。