将变量分配给活动目录中的数组


Assign variable to an array from Active Directory

我有麻烦弄清楚如何纠正问题,我有以下代码。我试图列出我的活动目录中所有人的姓名和电子邮件。这段代码可以工作。然而,当它被执行时,我也得到了以下警告:

警告:不能使用标量值作为数组。

从我在网上读到的我需要设置" $name['mail']['0'] = "Not Found";"到一个数组。我的问题是我该怎么做。我已经尝试了所有我能想到的方法,但都没有成功。如果有人能给我提供一些反馈,我将不胜感激。

foreach ($results as $name) {
  if (!isset($name['mail']['0'])){
       $name['mail']['0'] = "Not Found";
  }
  $allnames[$name['cn']['0']]['mail'] = $name['mail']['0'];

看起来您正在尝试将"Not Found"值返回到您正在运行的ldap查询的结果中。

当我编写代码从ldap获取用户信息时,我总是将值插入到不同的数组中(获取我想要的字段),然后在HTML中显示该数组:

foreach ($results as $name) 
{
    if (isset($name['mail']['0']))
    // Check if it IS set, rather than not set and then append the data.
    {
        $allnames[$name['cn']['0']]['mail'] = $name['mail']['0'];
    }
}

然后,在您拥有所有您想要的字段之后,您可以显示$allnames数组。

话虽如此,当我构造用户信息数组时,我使数组变得简单得多——知道我想要显示的内容,更像这样:

foreach ($results as $name) 
{
    if (isset($name['mail']['0']))
    // Check if it IS set, rather than not set and then append the data.
    {
        $allnames['mail'] = $name['mail']['0'];
    }
}

您(或至少我)在制作我收集的信息数组时不需要遵循ldap结构,而是希望从目录中获取特定字段,然后按它们是什么显示它们-例如,当我输出mail中的值时,我可能希望将其超链接为电子邮件地址,因此我将其保存在一个数组元素中,我知道键并稍后引用。