使用 $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号,它是主键,所以这就是创建顺序的原因。但是我希望能够按照"name"列对数组进行排序,这样它就会按字母顺序显示。通过我在网上的研究,我看到并尝试了许多方法,如使用JavaScript、使用order((和order BY。order BY似乎是实现这一点的最简单、最流畅的方法,但我无法使用它或任何其他方法来设置$agent_list。是否可以按照设置方式使用ORDER BY,或者我需要使用其他方法?

您需要检查$obj的设置位置,它可能是数据库查询类的实例。该类的构造函数(或返回分配给$obj的值的函数的定义(应该提供如何指定要包含在DB查询中的ORDER_BY子句的信息(如果有的话(,这是首选方法。

如果这不是一个选项,请使用自定义排序函数对php数组进行排序:

usort($agent_list, function ($a, $b) { return strcmp($a['name'], $b['name']); });

有关详细信息,请参阅PHP手册中的usort。代码未经测试。

最新更新