javascript - 使用 $obj->select 对从数据库中提取的数组进行排序
问题描述
我从另一个开发人员那里继承了一个项目,该项目有一堆从数据库中提取信息的下拉菜单。设置方式如下:
$agent_list = $obj->select(TABLEPRIFIX.'agent', '*', ['status' =>1 ]);
如果我没看错,它基本上是在说“选择表'the_agent'并抓取状态为1的所有内容”。该部分工作正常,但下拉菜单如下:
<div class="form-group">
<label>Agent</label>
<select name="agent_id" id="" class="form-control" required>
<option value="">Select</option>
<?php
foreach ($agent_list as $agent)
{
?>
<option value="<?php echo $agent['id']; ?>" <?php echo ($agent['id'] == $agent[0]['agency_id']) ? 'selected': '' ?> ><?php echo $agent['name']; ?></option>
将按非字母顺序显示所有名称。这些行有一个作为主键的 id 号,因此这就是创建顺序的原因,但是我希望能够按“名称”列对数组进行排序,以便它按字母顺序显示。通过我的在线研究,我看到并尝试了许多方法,例如使用 JavaScript、使用 order() 和 ORDER BY。ORDER BY 似乎是完成此任务的最简单和最顺畅的方法,但我无法获得它或任何其他方法来使用 $agent_list 的设置方式。是否可以使用 ORDER BY 的设置方式,还是我需要使用其他方法?
解决方案
您需要检查$obj
设置的位置,它可能是 db 查询类的实例。该类的构造函数(或返回分配给 的值的函数的定义$obj
)应提供信息,您可以如何指定ORDER_BY
要包含在 DB 查询中的子句(如果有的话),这是首选的方式。
如果这不是一个选项,请使用自定义排序函数对 php 数组进行排序:
usort($agent_list, function ($a, $b) { return strcmp($a['name'], $b['name']); });
有关详细信息,请参阅 PHP 手册中的 usort。未经测试的代码。
推荐阅读
- opengl - 如何使用从一个 VBO 到另一个 VBO 的数据
- svn - 使用带有挂钩修订的 svn externals。如何从此版本分支
- python - AWS EC2 Python 并行 - 极慢
- python - Dask groupby 在每列上分别给出错误的结果
- java - 查询仅在其子项不为空时返回实体
- r - 有没有办法生成 rmarkdown 文档的缓存版本,然后直接从缓存中生成多个输出?
- java - 如何在 JAVA 中将 Pair 转换为二维数组?
- gcc - 如何在 UBUNTU 上配置 Visual Studio Code 以编译 gstreamer 文件
- xpath - SoapUI 中的查询匹配不适用于正确的 Xpath
- c# - Lambda 表达式中的条件