我检查了网站,有很多与此问题相关的答案。但我正在学习PHP。所以,我很难理解。 反正,
$data = array();
$data['count'] = $result->num_rows;
...
...
$data['content'][] = array(
"userid" => $userid,
"title" => $title,
"slug" => $slug,
"download" => $download,
"usrtitle" => $usrtitle,
"company" => $company,
"period" => $period,
"email" => $email,
"mobile" => $mobile,
"fname" => $fname,
"lname" => $lname,
"address" => $address,
"pic" => $pic,
"appliedon" => date("d-M-Y", strtotime($appliedon)),
"price" => $price
);
echo json_encode($data);exit;
我正在使用ajax从数据库中获取数据。一切正常,但我想按价格对数据进行排序。我无法对其进行硬编码,因为我希望用户选择相同的代码。 有嵌套的mysql查询,无法从mysql查询中对数据进行排序。因为数据来自多个查询。
请告知我如何对数据进行排序。
我在SO How do I Sort a Multidimensional Array in PHP上发现了这个问题 我不确定这是否适用于我的情况。
由于
修改 数据库表结构。
userid, title, slug,email,mobile,fname,lname,address,pic
来自users表。来自个人资料表的download, usrtitle, company,price
。来自应用表的appliedon
。
首先在的应用表上运行查询,我得到了userid。用户和配置文件表中使用此用户标识来获取详细信息。我不确定我是否可以使用orderby子句对数据进行排序。
答案 0 :(得分:1)
内置函数array_multisort
的PHP适用于这种情况。
1.获取来自$data['content']
$sort_arr = array();
foreach($data['content'] as $item) {
$sort_arr[] = $item['price'];
}
2.使用array_multisort
按下降顺序按价格排序$data['content']
:
//if you want ascending order replace `SORT_DESC` by `SORT_ASC`
array_multisort($sort_arr, SORT_NUMERIC, SORT_DESC, $data['content'])
array_multisort
用法的更多详细信息,请参阅官方文档:http://php.net/manual/en/function.array-multisort.php
答案 1 :(得分:1)
您可以使用usort
并定义自己的排序功能:
damageComponenetAutoCompleteTextview = (AutoCompleteTextView) popupView.findViewById(R.id.popup_damage_component_item);
如果您想按名称(或其他字符串)订购,可以使用strnatcmp
作为示例。
$data = [
["name" => "A", "price" => 54],
["name" => "B", "price" => 102],
["name" => "C", "price" => 4],
["name" => "D", "price" => 76],
];
echo("UNSORTED <br>\n");
print_r($data);
usort($data, function($a, $b) {
return $a["price"] - $b["price"];
});
echo("\n<br>\n<br>SORTED <br>\n");
print_r($data);