Есть ли способ сортировки PHP array_merge на основе raw [2]? - PullRequest
0 голосов
/ 11 января 2019

Я создаю скрипт времени посещаемости PHP. Я начал с хранения данных в базе данных MySQL и использовал разные таблицы для перерывов на обед / перерыв, перерывы, обеды / ужины. У каждого из упомянутых выше жертв есть таблица, которая структурирована с: ID, start, end, flag

Я уже пытался сделать это с помощью следующего кода foreach, но безуспешно!

foreach ($total as $key => $row) {
   $start[$key]  = $row['start'];
}
$final = array_multisort($start, SORT_DESC,  $total);
echo $final;

Вот код, который я сделал с 2 запросами SELECT MySQL

$result = mysqli_query($db, "SELECT * FROM time WHERE username = 
'$user_check' ORDER BY start DESC");
$data = array();
while ($row = mysqli_fetch_assoc($result)) {

$data[] = $row;
} $db->next_result();
$result = mysqli_query($db, "SELECT * FROM break WHERE username = 
'$user_check' ORDER BY start DESC");
$data2 = array();
while ($row = mysqli_fetch_assoc($result)) {

$data2[] = $row;
}
$total = array_merge ($data, $data2);

Я бы хотел, чтобы 1 массив из этих 2 запросов был отсортирован DESC по start, поскольку я буду использовать этот массив для заполнения таблицы в порядке DESC.

1 Ответ

0 голосов
/ 11 января 2019

Используйте UNION ALL в своем запросе вместо массивов слияния. Пусть база данных сделает всю работу за вас:

SELECT * FROM
    (SELECT * FROM time WHERE username = '$user_check'
     UNION ALL
     SELECT * FROM break WHERE username = '$user_check'
) ORDER BY start DESC

PS: Ваш код уязвим для SQL-инъекций. Вместо этого вы должны использовать подготовленное заявление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...