嗨我有一个名为asc.txt的文件,这个文件在每行中都有整数,如9 8 100,在其他行中假设为2 1 100.目标是按升序对每一行进行排序。下面的代码只排序一行。当我添加其他行时,它不会排序。感谢
<?php
//按换行符拆分文件&#34; \ n&#34;使用explode()
进入数组$variable=file_get_contents('asc.txt');
$file = explode(" ",$variable);
//使用sort()
排序数组sort($file);
echo implode(",\n", $file);
?>
文件中的输入是
1 9 8 100
2 1 5 1000
输出应为
1 8 9 100
1 2 5 1000
答案 0 :(得分:2)
可以做:
foreach (new SplFileObject('asc.txt') as $lineInFile) {
preg_match_all('/\d+/', $lineInFile, $numbersInFile);
sort($numbersInFile[0], SORT_NUMERIC);
echo implode(' ', $numbersInFile[0]), PHP_EOL;
};
这将流读取您的输入文件,将一行中的所有数字匹配到一个数组中,对该数组进行排序并输出它。根据您的排序需求,您还可以使用natsort()
至于输出:
我假设您在命令行上使用此脚本。如果您想在浏览器中使用换行符显示此内容,请添加<br>
元素或使用nl2br
或将输出封装到<pre>
元素中,或使用CSS&{39; s {{{ 1}}。
答案 1 :(得分:0)
当你爆炸你的弦时,将你的针设置为“\ n”
<?php
//Split file by newlines "\n" into an array using explode()
$variable=file_get_contents('asc.txt');
$file = explode("\n",$variable); // NOTICE "\n" AS NEEDLE
//sort array with sort()
sort($file);
echo implode(",\n", $file);
?>
答案 2 :(得分:0)
如果你的文件使用\ n样式换行,那么这应该有效,否则请尝试将\ n替换为\ r。
$variable=file_get_contents('asc.txt');
$file = explode(" ", str_replace("\n", " ", $variable) );
sort($file);
echo implode(",\n", $file);
?>
答案 3 :(得分:0)
$lines_array = file("asc.txt");
natsort($lines_array);
print_r($lines_array);
//if you need to echo the lines you can use:
foreach($lines_array as $line){
echo $line."\n";
}
输出:
Array
(
[1] => 2 1 100
[2] => 5 1 100
[0] => 9 8 100
[3] => 16 1 100
)
natsort()
会正确排序数字(而不是asort()
)