有没有一种方法可以基于raw [2]对PHP array_merge进行排序?

时间:2019-01-11 15:15:43

标签: php mysql arrays merge

我正在创建一个考勤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);

我希望这2个查询中有1个数组按DESC排序start,因为我将使用该数组以DESC顺序填充表。

1 个答案:

答案 0 :(得分:1)

在查询中使用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注入的攻击。您应该改用准备好的语句。