我试图按字母顺序排列,然后从这个数组中删除重复项。然后,我试图将数组中的每个元素写入文本文件中的自己的行。
表示在已排序且唯一的数组中只有一个元素将在一行上。
但是我得到的只是一个空白的文本文件。
如何将数组$sorted_lines
的内容写入文本文件,以便每个元素都在新行上?
<?php
$lines = file('american.txt');
$lines = array_walk($lines, 'trim');
$sorted_lines = sort(array_unique($lines));
$out = fopen("new.txt", "w");
foreach($sorted_lines as $line){
$line .= "n";
fwrite($out, $line);
}
?>
array_walk()和sort()都是通过引用传递的,对于成功/失败,返回值是布尔值true/false
array_walk($lines, 'trim');
$sorted_lines = array_unique($lines);
sort($sorted_lines);
在函数array_walk()
和sort()
中,第一个参数是通过引用而不是值传递的。这意味着函数直接修改第一个参数,而不是返回结果。array_walk()
返回一个布尔值,指示函数是否工作,而不是数组;因此,该功能为设置$lines=1
。sort()
做同样的事情。
在PHP文档中,你可以通过在参数前面加一个&符号来判断参数是通过引用传递的;例如,sort
声明如下所示:
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
注意现在第一个参数是&$array
,而不是$array
。这与在自定义函数中声明引用的方式相同。