我从数据库中获取数据,并在数组中对其进行排序。
查询中的数据(以正确的顺序显示):
id task_id note date_created user_name document_name document_type
238 131 3g 1385563455 Admin doc3 jpg
238 131 3g 1385563455 Admin doc2 png
238 131 3g 1385563455 Admin doc1 png
240 131 sd 1385563536 Admin NULL NULL
241 131 sd 1385563565 Admin NULL NULL
242 131 qw 1385563612 Admin NULL NULL
然后我抓取数据并将其存储在一个数组中:
$all_notes = array();
foreach($notes as $note) {
$all_notes[$note["id"]]["text"] = $note["note"];
$all_notes[$note["id"]]["user_name"] = $note["user_name"];
$all_notes[$note["id"]]["date"] = $note["date_created"];
$all_notes[$note["id"]]["task_id"] = $_POST['task_id'];
$all_notes[$note["id"]]["docs"]["document_name"][] = $note["document_name"];
$all_notes[$note["id"]]["docs"]["document_type"][] = $note["document_type"];
}
当我回显$ all_notes数组时,排序顺序现在完全相反。而不是第一行数据是id 238,它现在是242.即使我改变查询以相反的方式排序,数组仍然将数据从238排序到242(而不是242到238,这就是它应该是)。
非常感谢您的帮助!
答案 0 :(得分:1)
请参阅array_flip()函数。这将允许您翻转数组的顺序。
http://us1.php.net/array_flip
原因是,如果你真的认为,242值首先进入数组 - 它是第一个从$notes
数组出来的值。
Orrr ...尝试将ORDER BY DESC
添加到SQL查询的末尾。您没有指定之前尝试更改排序的方式,顺便说一句。
大流士
答案 1 :(得分:1)
您在代码中执行的操作是分配数组的$ id元素 使用db中的值,确保它会逐渐自动填充。
all_notes [239] = value1; all_notes [238] = value2; 等...
但是如果你print_r(all_notes),你得到238,239,...等,这是好的,因为PHP数组 默认情况下以增量顺序填写;
尝试这样:
$i=0;
$all_notes = array();
foreach($notes as $note) {
$all_notes[$i]["id"] = $note["id"];
$all_notes[$i]["text"] = $note["note"];
$all_notes[$i]["user_name"] = $note["user_name"];
$all_notes[$i]["date"] = $note["date_created"];
$all_notes[$i]["task_id"] = $_POST['task_id'];
$all_notes[$i]["docs"]["document_name"][] = $note["document_name"];
$all_notes[$i]["docs"]["document_type"][] = $note["document_type"];
$i++;
}
现在,您的数组按照从DB查询中获得的顺序填充。