将php脚本结果写入文本文件

时间:2017-06-01 01:19:00

标签: php windows command-line echo

php脚本在屏幕上显示结果,但不会将结果导出到文本文件。执行php c:\myscript.php > output.txt有效,但不包含换行符(与屏幕上显示的方式相反)。

我在这里缺少将结果导出到文本文件?

使用命令行在屏幕上运行的脚本:

<?php

$list1 = array('a1', 'a2', 'a3');
$list2 = array('b1', 'b2',);
$list3 = array('c1', 'c2', 'c3');

foreach ($list1 as $i) {
    foreach ($list2 as $j) {
        if ( $j == $i ) { continue; }
        foreach ($list3 as $k) {
            if ( $k == $j ) { continue; }
            if ( $k == $i ) { continue; }
            echo "$i$j$k\n";
        }
    }
}

?>

我试图在最后插入此内容,但收到错误。

$sListText = file_get_contents("output.txt");
echo nl2br($sListText);

我试过这个,得到空文本文件:

$output = null;
foreach....
file_put_contents("output.txt", $output, FILE_APPEND);

2 个答案:

答案 0 :(得分:2)

在Linux机器上php myscript.php > output.txt工作正常并且有换行符,你使用windows,所以你必须改变

echo "$i$j$k\n";

echo "$i$j$k\r\n";

希望它有所帮助。

答案 1 :(得分:1)

function incrementDups(arr) { // a set of encountered unique values const encounters = new Set(); // a map of the last unique non-duplicate for each value const lastNonDup = new Map(); // increment each duplicate until it has no duplicates return arr.map(num => { let updatedNum = lastNonDup.has(num) ? lastNonDup.get(num) : num; while (encounters.has(updatedNum)) { updatedNum += 1; } encounters.add(updatedNum); lastNonDup.set(num, updatedNum); return updatedNum; }); } console.log( incrementDups( [1, 2, 2, 3, 2, 2, 4] // [1, 2, 3, 4, 5, 6, 7] ) ); console.log( incrementDups( [1, 1, 1, 1, 1, 1, 1] // [1, 2, 3, 4, 5, 6, 7] ) ); console.log( incrementDups( [1, 99, 55, 4, 55, 2] // [1, 99, 55, 4, 56, 2] ) );将文件的内容作为字符串获取,因此如果要将任何内容写入文件,则无效。

file_get_contents()

仅供参考 - 这将覆盖output.txt文件中的所有现有数据。

还需要注意的是,您确实需要在$ output变量中放置一些内容,因此需要将此行$file = fopen('output.txt', 'w'); //do your stuff here fwrite($file, $output); fclose($file); 更改为echo "$i$j$k\n";