1

配列のソートに問題があります。$infoGroup は、以前の「ldap_get_entries」呼び出しの結果です。この配列をステップ実行すると、結果が配列 $names に格納されます。次に、 $names をアルファベット順に並べ替えたいと思います。さまざまな方法を試しましたが、役に立ちませんでした。配列は、常に構築された順序のままです。

私は何を逃したのですか?

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 配列をソートしようとしました:

  1. ヘンリック・リンボム
  2. クラウス・レーデル
  3. 管理者
  4. ベルント・ブランシュテッター
  5. プロキシユーザー
  6. パトリック・ロフストローム
  7. アンドレアス・ガリック
  8. マーティン・ストールダー
4

1 に答える 1

0

うーん..説明するのは少し難しいですが、問題はそのforeach()ループ内で配列をソートしているためです。基本的に、最初のループの反復で配列要素を作成しているため、natsort()ソートする要素は 1 つだけであり、ネストされたforeach()ループはその 1 つの要素のみを出力し、2 回目以降の反復で unset() になります...

ソートして出力するその秒を抽出し、最初のループの先頭から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;
于 2012-11-02T12:32:52.203 に答える