Сортировка массива, извлеченного из базы данных, с помощью $ obj-> select - PullRequest
0 голосов
/ 03 апреля 2020

Я унаследовал проект от другого разработчика, у которого есть куча выпадающих меню, которые извлекают информацию из базы данных. Это настроено следующим образом:

$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>

Отображает все имена в не алфавитном порядке. Строки имеют номер идентификатора, который является первичным ключом, поэтому он и создает порядок, однако я бы хотел отсортировать массив по столбцу «имя», чтобы он отображался в алфавитном порядке. В своих онлайн-исследованиях я видел и пробовал множество методов, таких как JavaScript, order () и ORDER BY. ORDER BY, кажется, самый простой и плавный способ выполнить это, но я не могу заставить его или любой другой метод работать со способом, установленным $ agent_list. Можно ли использовать ORDER BY в соответствии с его настройками или мне нужно использовать другой метод?

1 Ответ

1 голос
/ 03 апреля 2020

Вам нужно проверить, где установлено $obj, это может быть экземпляр класса запроса БД. Конструктор этого класса (или определение функции, возвращающей значение, присвоенное $obj) должен предоставить информацию о том, как можно указать предложение ORDER_BY, которое будет включено в запрос к БД (если вообще), то есть предпочтительный способ go.

Если это не вариант, сортируйте массив php с помощью пользовательской функции сортировки:

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

Консультируйтесь с usort в PHP руководство для деталей. Код не проверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...