0

私は2セットのコードを持っており、どちらも単独で機能しますが、両方を組み合わせる必要があり、それを実行できませんでした。

最終的には、テキストファイルが1行ずつ、配列番号とともにアルファベット順に表示されます(したがって、配列番号は各行の最後に表示されます)。

コードの最初のピース

<?php
$filename="users.txt"; 
$lines = array();
$file = fopen($filename, "r");

while(!feof($file)) { 
    $lines[] = fgets($file,4096);
} 

natcasesort($lines);
$text = implode("<br />", $lines);
print_r($text);

fclose ($file); 
?>

コードの2番目のピース

<?php 
 $lines = file('users.txt'); 
 foreach ($lines as $line_num => $line) 
{ 
 print "<font color=red>Line #{$line_num}</font> : " . $line . "<br />\n"; 
 }
 ?> 
4

1 に答える 1

0

これを行うには 2 つの簡単な方法があります。これは PHP >= 5.4.0 でのみ動作します:

$lines = file('users.txt');
asort($lines, SORT_NATURAL | SORT_FLAG_CASE); // natcasesort that preserves keys!

foreach ($lines as $num => $line) { 
    printf("%s (line #%d)<br>", $line, $num);
}

以前のバージョンを使用している場合は、 と を使用して同じ効果を得ることができuasortますstrnatcasecmp

$lines = file('users.txt');
uasort($lines, 'strnatcasecmp'); // natcasesort that preserves keys

// the loop is the same

実際に見てください

どちらの場合も、インデックスの関連付けを維持するソート関数を使用して、行がソートされた後も元のキー (ファイル内の行番号) によってインデックスが付けられたままになるようにするという考え方です。両方ともこれusortuasort行います。uasortいくつかの組み込みオプションのみを許可しながら、並べ替え比較関数を自分で指定できusortます (PHP < 5.4 では自然な並べ替えは含まれません)。

余談ですが、このタグは二度と使用しないでください。<font>

于 2012-04-10T14:48:06.990 に答える