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);
答案 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";