查询后如何对ldap结果进行排序

时间:2018-10-24 07:57:58

标签: php sorting ldap

我有一个代码,我想按sn对ldap结果进行排序。但这不起作用。 我做错了什么? 谢谢!

$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 :(得分:0)

您可以使用PHP的客户端ldap排序功能:

// 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);

答案 1 :(得分:0)

为此使用uasort

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

(未经测试,但应该可以工作)

不推荐使用ldap_sort,因为几年以来不推荐使用底层C函数,并且排序算法也不灵活。使用这种方法,您可以获得相同的功能,但灵活性更高。而且,由于两者都只对返回的结果集进行排序,因此您最好使用这种方法。