Заполнить ассоциативный массив PHP, используя цикл с данными mysql

Я создаю простой PHP для вывода данных в диаграммы javascript apexcharts. Чтобы сделать вывод 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"
                ]
            }
        ]
    }
]

Как я могу создать ожидаемый результат JSON из кода PHP?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
530
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы создаете их в отдельном пространстве. Когда вы объявляете и нажимаете их, поместите их в один контейнер:

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']
);

Вы в основном говорите, что нужно отправлять все подпартии, но вместе.

Спасибо. это работает отлично и дает ожидаемый результат.

sameera 31.05.2019 05:25

Другие вопросы по теме