1

私は多くの判例を含むマニュアルを含むウェブサイトを持っています。ユーザーがHTMLアップロードスクリプトを使用すると、サーバー上のフォルダーに先例がアップロードされます。次のスクリプトを使用して、その特定のフォルダー内のすべてのファイルを一覧表示します。

<?php  //define the path as relative
  $dir = "./OFFICE PRECEDENTS/Business & Corporate Law"; 
  $webpath ="";  //using the opendir function  
  echo "<ol>";    
  // Open a known directory, and proceed to read its contents   
  if ($dh = opendir($dir)) {     
  while (($file = readdir($dh)) !== false) {   
  if (is_dir($dir.'/'.$file)){}      
  else if ($file == '.'){}      
  else if ($file == '..'){} 
  else if ($file == 'index.php'){}     
  else {      
  echo "<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";      
  }    
  }       
  closedir($dh);     
  } 
  echo "</ol>";     
  ?>

リストをアルファベット順に並べ替えるシステムを実装するにはどうすればよいですか?

4

5 に答える 5

2

私はこれがあなたを助けると信じています:

natcasesort: http://www.php.net/manual/en/function.natcasesort.php

usort: http://www.php.net/manual/en/function.usort.phpと strtolower(a) と strtolower(b) を比較するコンパレータ関数

最初に配列を作成する必要があります。

お役に立てれば。

于 2012-08-24T15:46:15.023 に答える
2

特定のケースの場合:scandir()の代わりに使用する場合readdir()、デフォルトの順序は既にアルファベット順になっています。

http://php.net/manual/en/function.scandir.php

2 番目のパラメーターは次のとおりです。

sorting_order
デフォルトでは、ソート順はアルファベットの昇順です。オプションの sorting_order が SCANDIR_SORT_DESCENDING に設定されている場合、ソート順はアルファベットの降順になります。SCANDIR_SORT_NONE に設定されている場合、結果はソートされません。

したがって、代わりに:

 if ($dh = opendir($dir)) {     
   while (($file = readdir($dh)) !== false) {   
       // your code   
    }    
  }       
  closedir($dh);  

次のようなものを使用してください:

if ($files = scandir($dir))
{
    foreach ($files as $file) {
       // your code
    }
}
于 2012-08-24T15:49:04.707 に答える
0

配列に保存しますが、数字キーの代わりに英数字キーを使用します。次に、キーで並べ替え機能を使用できるようになり、値が正しい順序に変更されます。次に、アレイを繰り返し処理して、エコーバックします。

配列の並べ替えの詳細については、http://php.net/manual/en/array.sorting.phpをご覧ください。

于 2012-08-24T15:43:43.683 に答える
0

これを行う多くの方法、glob()も優れているので、ディレクトリについて心配する必要はありません。

<?php 

$dir = "./OFFICE PRECEDENTS/Business & Corporate Law/";

$files = glob($dir."*.*");
sort($files);//Sort the array

echo "<ol>";
foreach($files as $file){
    if($file == $dir.'index.php'){continue;}
    $file = basename($file);
    echo "\t<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";
}
echo "</ol>";
?>
于 2012-08-24T15:51:41.493 に答える
0
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");

sort($my_array);
print_r($my_array);
?>

または使用できます: asort、rsort、arsort

于 2012-08-24T15:47:14.203 に答える