在php

时间:2016-04-22 04:41:09

标签: php arrays json

我检查了网站,有很多与此问题相关的答案。但我正在学习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子句对数据进行排序。

2 个答案:

答案 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);