我有一个排序数组的问题。 $ infoGroup是之前“ldap_get_entries”调用的结果。当我单步执行此数组时,我将结果放在数组$ names中。 然后我想按照alfabetical顺序排序$ name,我尝试了许多不同的方法但无济于事。数组始终保持与构造顺序相同的顺序。
我错过了什么?
foreach($infoGroup[$i]['member'] as $member) {
//echo "<li>".$member;
$go = stripos($member, "n");
unset($names);
$ai++;
if ( $go == 1 ) {
// extract member name from string
$temp = substr($member, 0, stripos($member, ","));
// Strip the CN= and change to lowercase for easy handling
$temp = str_replace("cn=", "", $temp);
$names[$ai] = ($temp);
}
if (natsort($names)){
foreach ($names as $key => $val) {
echo "<li>";
echo "$key $val";
}
}
}
$ai = 0;
这是结果,但我尝试对$ names数组进行排序:
答案 0 :(得分:0)
嗯......有点难以解释,但问题是因为你在foreach()
循环中对数组进行排序。本质上,由于您是在第一个循环的迭代中创建数组元素,natsort()
只有1个要排序的元素,而您的嵌套foreach()
循环只输出该1个元素,然后取消设置( )在第二次和进一步的迭代......
提取排序和输出的第二个foreach()
,并从第一个循环的顶部删除unset()
。这应输出您想要的结果。
像这样......
foreach($infoGroup[$i]['member'] as $member) {
//echo "<li>".$member;
$go = stripos($member, "n");
$ai++;
if ( $go == 1 ) {
// extract member name from string
$temp = substr($member, 0, stripos($member, ","));
// Strip the CN= and change to lowercase for easy handling
$temp = str_replace("cn=", "", $temp);
$names[$ai] = ($temp);
}
}
if (natsort($names)){
foreach ($names as $key => $val) {
echo "<li>";
echo "$key $val";
}
}
$ai = 0;