我有一个代码,我想按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++)....
答案 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函数,并且排序算法也不灵活。使用这种方法,您可以获得相同的功能,但灵活性更高。而且,由于两者都只对返回的结果集进行排序,因此您最好使用这种方法。