【问题标题】:How to pull entries out of ldap_get_entries array如何从 ldap_get_entries 数组中提取条目
【发布时间】:2020-05-09 03:41:55
【问题描述】:

我正在尝试使用 php ldap_get_entries 获取 Active Directory 组中的用户列表。我能够连接到 ldap 服务器并毫无问题地绑定。我遇到的这个问题是我在使用ldap_get_entires 时从数组中得到的结果。这是我用来从组中获取数据的方法:

$result = ldap_search($ldapConn, $ldaptree, "(member=*"),array('member'));
$data = ldap_get_entries($ldapConn, $result);
print_r($data);

我得到的是这样的:

Array([count] => 1 [0] => Array([member] => Array([count => 3 [0] => CN=Mike Jones,CN=Users,DC=DOMAIN,DC=NET [1] => CN=Van Smith,CN=Users,DC=DOMAIN,DC=NET [2] => CN=Jane Doe,CN=Users,DC=DOMAIN,DC=NET) [0] => member[count] => 1 [dn] => CN=Cool Guys,CN=Users,DC=DOMAIN,DC=NET))

如何从这个数组中只提取名称以使其看起来像这样?

Mike Jones 
Van Smith 
Jane Doe

【问题讨论】:

  • 你可以使用explode例如3v4l.org/3rhko
  • @Thefourthbird 有没有办法使用排序?
  • 您可以将值添加到数组中,然后对数组进行排序
  • @Thefourthbird 我让它与 array_multisort 一起工作。您想将您的建议作为答案发布,以便我标记它吗?如果没有,我可以在我写下我所做的事情时给你荣誉。
  • 没关系,这是一个关于如何解决它的想法。如果需要,您可以在答案中使用它。很高兴它对你有用:-)

标签: php arrays ldap


【解决方案1】:

感谢@Thefourthbird 的建议。他建议我用下面的来取出我需要的名字。

foreach ($array[0]["member"] as $key => $member) {
    if (is_int($key)) {
        $User[] = explode('=', explode(',', $member)[0])[1] . PHP_EOL;
    }
}

剩下要做的就是按字母顺序组织数据。我使用了array_multisort 函数来执行此操作。

array_multisort($User, SORT_ASC);
foreach ($User as $key => $SortUser) {
    echo $SortUser;
}

现在所有的名字都在各自的行中按字母顺序排列。

Jane Doe
Mike Jones 
Van Smith 

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2016-06-19
    • 2020-01-21
    • 2021-10-12
    • 2012-01-09
    • 2021-08-26
    相关资源
    最近更新 更多