底线,我有一个巨大的多维数组返回ldap_get_entries,我试图根据位置属性解析到不同的组。从数组基于值获取记录
在PowerShell中,我可以这样做:
$location1 = Get-ADUser -Filter * | ? {?_.l -eq "test_location"}
什么我目前在做内PHP(至于我的大脑就会让我去)是一样的东西:
Foreach ($records as $record) {
if (isset($record['l'])) {
switch ($record['l'][0]) {
case "test_location1":
$location1[] = $record;
continue 2;
case "test_location2":
$location2[] = $record;
continue 2;
}
}
}
然后我使用foreach针对使用上述方法的位置变量数组($ location1,$ location2)的循环(替代语法),将记录排序到其适当的位置变量中。通过这种方式,我构建了一个将每个位置记录组合在一起的HTML表格。我为每个位置创建一个新的表格,每个组之间有一些HTML代码,所以我不相信按位置对ldap结果进行排序会起作用,因为它会输出一个大表。
有什么办法可以在PHP中指定WHERE子句吗?因此,我可以将具有匹配键值的数组中的所有记录分配给变量1,并将具有不同匹配键值的数组中的所有记录分配给变量2。
我假设我正在以业余脚本方式解决此问题。如果有更简单的方法来完成此任务(可能会跳过赋值记录到变量部分),或任何类型的“最佳做法”,我缺少在这里,我渴望学习它。
在此先感谢!
它看起来像我们在这里的东西。我将不得不考虑这些概念,并看看我能否让他们为我的情况工作。 – Cody
你可以用最蹩脚的词语解释foreach($ records as $ record)和foreach($ recordsSorted as $ location => $ records)之间的区别。来自Powershell,我不确定我是否理解这两个foreach结构之间的区别。 – Cody
前者将数组$ record中的每个项目分配给变量$ record。后者做同样的事情,但也将条目的数组键(在本例中是''''''''属性的值)赋值给变量$ location。有关PHP的关联数组的更多信息,请参见http://php.net/manual/en/language.types.array.php – heiglandreas