我对数组的排序有问题。
我使用两个查询从MySQL数据库中的两个不同表中提取数据,然后使用array_merge
将结果连接到一个数组中。除了排序问题,一切正常。这两个表有一个格式为5/25/2015
的日期字段,我试图按此日期按降序对提取的数据进行排序,但这不会发生。
以下是我使用的代码:
$sql = "SELECT * FROM tab1 WHERE data between '$one_parameter' and '$second_parameter' and id_ute = '$ute'";
$res = mysql_query($sql);
$data = array();
while ($rows = mysql_fetch_array($res, MYSQL_ASSOC)) {
$data[] = $rows;
}
$sql2 = "SELECT * FROM tab2 WHERE data_ass between '$one_parameter' and '$second_parameter' and id_ute = '$ute'";
$res2 = mysql_query($sql2);
$data2 = array();
while ($rows2 = mysql_fetch_array($res2, MYSQL_ASSOC)) {
$data2[] = $rows2;
}
$combinedData = array_merge($data,$data2);
function cmp($a, $b){
return $b['data'] - $a['data_ass'];
}
usort($combinedData, "cmp");
$json = json_encode($combinedData);
echo $json;
但它不起作用。我做错了什么?
我需要按时间顺序创建这样的东西:
[
{
"id_tur": "1886",
"id_ute": "1",
"data": "2015-05-22",
"orario": "13.00 - 19.00",
"tipo_serv": "home",
},
{
"id_tur": "1877",
"id_ute": "1",
"data": "2015-05-12",
"orario": "00.00 - 09.00",
"tipo_serv": "work",
},
{
"id_ass": "256",
"id_ute": "1",
"data_ass": "2015-05-08",
"notes": "lorem",
"tipo_serv": "0",
},
{
"id_turno": "1296",
"id_ute": "1",
"data": "2015-05-02",
"orario": "07.00 - 14.00",
"tipo_serv": "city",
}
]
答案 0 :(得分:0)
usort比较不同数组项的相同属性
将您的第二个查询更改为:
$sql2 = "SELECT *, data_ass AS data FROM tab2 WHERE data_ass between '$one_parameter' and '$second_parameter' and id_ute = '$ute'";
将功能比较为:
function cmp($a, $b){
return $b['data'] > $a['data'];
}