Как я могу отобразить MySQL-данные в массиве, как в примере? - PullRequest
1 голос
/ 18 октября 2019

Я хочу использовать решение, показанное в StackOverflow PHP Определить, когда несколько (n) диапазонов даты и времени перекрывают друг друга ! Для работы я запрашиваю результаты из MySQL. Как и в решении, пользователь может иметь несколько записей даты.

Пока у меня есть массив, но он не сгруппирован по пользователям (именованным приглашенным), которые добавили свои даты.

    while ($row = mysqli_fetch_assoc($result)) {

        $arr[$row['invitee']];

        $temp = array($row['start_time'], $row['end_time']);

        $arr[] = $temp;
    }

Со следующим результатом:

Array
(
    [0] => Array
        (
            [0] => 2019-10-16 00:00:00
            [1] => 2019-10-31 23:00:00
        )

    [1] => Array
        (
            [0] => 2019-10-17 12:12:00
            [1] => 2019-10-18 20:40:00
        )

    [2] => Array
        (
            [0] => 2019-10-12 10:00:00
            [1] => 2019-10-24 20:00:00
        )
...

Я ожидаю или хочу достичь массива, как показано в посте, упомянутом выше:

$availability = [
    [
        ["2016-04-30 12:00", "2016-05-01 03:00"]
    ],
    [
        ["2016-04-30 03:00", "2016-05-01 03:00"]
    ],
    [
        ["2016-04-30 03:00", "2016-04-30 13:31"],
        ["2016-04-30 15:26", "2016-05-01 03:00"]
    ]
];

, чтобы использовать решение из поста. Но как мне добиться того, чтобы мои MySQL-данные отображались так?

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Просто нужно изменить ваш массив внутри while следующим образом:

while ($row = mysqli_fetch_assoc($result)) {
    $temp = array(array($row['start_time'], $row['end_time']));
    $arr[$row['invitee']] = $temp; 
}

добавить сюда еще один массив array(array($row['start_time'], $row['end_time']))

Редактировать:

<?php
$finalArray = array();
while ($row = mysqli_fetch_assoc($result)) {
  $finalArray[$row['invitee']][] = array($row['start_time'], $row['end_time']);
}
?>

Объяснение:

С помощью этого кода вы можете получить несколько приглашений против каждого пользователя.

0 голосов
/ 18 октября 2019

Проверьте, работает ли:

    $res = array();
while ($row = mysqli_fetch_assoc($result)) { 
$res[ ]= [$row['start_time'], $row['end_time']];
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...