Как отсортировать результат ldap после запроса - PullRequest
0 голосов
/ 24 октября 2018

У меня есть код, где я хочу отсортировать результаты ldap по sn.Но это не работает.Что я делаю не так?Спасибо!

$att = array("company","samaccountname","ou","name","displayname", "sn", "givenname", "mail", "telephonenumber", "mobile","title","department");
$result=ldap_search($ldap_connection, $searchdn, $filter, $att);

$info = ldap_get_entries($ldap_connection, $result);

ksort($info['sn']);

for ($i=0; $i<$info["count"]; $i++)....

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Используйте uasort для этого:

uasort($info, function($a, $b) {
    return strnatcasecmp($a['sn'], $b['sn']);
}) ;

(не проверено, но должно работать)

Использование ldap_sort не рекомендуется в качестве базовой функции Cв течение нескольких лет считается устаревшим, и алгоритм сортировки также не является гибким.При таком подходе вы получаете ту же функциональность, но с гораздо большей гибкостью.И поскольку оба только сортируют возвращенный набор результатов, вам лучше использовать этот подход.

0 голосов
/ 24 октября 2018

Вы можете использовать функцию сортировки ldap на стороне клиента PHP:

// Search
$results = ldap_search($ldap_connection, $searchdn, $filter, $att);

// Sort -- attribute on which to sort needs to be included in $att array
ldap_sort($ldap_connection, $result, 'sn');

// Get data
$info = ldap_get_entries($ldap_connection, $result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...