1

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

这意味着只有一个已排序且唯一的数组元素会在一行中。

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

如何将此数组的内容写入$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);
}
?>
4

2 回答 2

2

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

array_walk($lines, 'trim');
$sorted_lines = array_unique($lines);
sort($sorted_lines);
于 2013-06-07T15:15:48.033 回答
1

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

在 PHP 文档中,您可以通过在参数前面加上 & 号来判断参数是通过引用传递的;例如,sort声明如下所示:

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

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

于 2013-06-07T15:21:56.600 回答