在文本文件中的新行上写入数组元素

时间:2013-06-07 15:11:51

标签: php arrays file

我正在尝试按字母顺序排列,然后从此数组中删除重复项。然后我试图将数组中的每个元素写入文本文件中的自己的行。

意味着只有一个排序且唯一的数组元素将在一行上。

但我得到的只是一个空白文本文件。

如何将此数组$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);
}
?>

2 个答案:

答案 0 :(得分:2)

array_walk()sort()都通过引用传递,返回值为成功/失败的布尔值true / false

array_walk($lines, 'trim');
$sorted_lines = array_unique($lines);
sort($sorted_lines);

答案 1 :(得分:1)

在函数array_walk()sort()中,第一个参数是通过引用传递的,而不是值。这意味着该函数直接修改第一个参数,而不是返回结果。 array_walk()返回一个布尔值,表示函数是否有效,而不是数组;因此,该功能正在设置$lines=1sort()做同样的事情。

在PHP文档中,你可以告诉参数是通过引号传递的,前面是一个和号;例如,sort声明如下所示:

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

现在请注意,第一个参数是&$array,而不是$array。这与在自定义函数中声明引用的方式相同。