PHP中的array_diff()提供了意外信息

时间:2016-09-13 21:21:36

标签: php arrays

这是我的文件spectrum_info.txt

的内容
raid,spectrum/raid_info.txt
rbid,spectrum/rbid_info.txt
rcid,spectrum/rcid_info.txt
rdid,spectrum/rdid_info.txt
reid,spectrum/reid_info.txt

使用以下代码

加载此文件数据时
$s_types=file('spectrum/spectrum_info.txt');
$i=0;
foreach($s_types as $s_type)
{
    $s_arrfields = explode(',', $s_type);
    $s_names[] = $s_arrfields[0];
    $sf_names[] = $s_arrfields[1];
}

我将上述文件中的file_names信息放入$sf_names数组中。 手动我创建了另一个具有相同数据的数组:

$f_temp=array("spectrum/raid_info.txt",
                                          "spectrum/rbid_info.txt",
                                          "spectrum/rcid_info.txt",
                                          "spectrum/rdid_info.txt",
                                          "spectrum/reid_info.txt",
                                          "spectrum/rfid_info.txt",
                                          "spectrum/rgid_info.txt",
                                          "spectrum/rhid_info.txt");
                            print_r($f_temp);
                            echo"<br/>";
                            print_r($sf_names);
                            echo"<br/>";
                            $result=array_diff($f_temp,$sf_names);
                            print_r($result);

两个阵列都有相同的数据。仍然array_diff()显示所有数组元素不同。

我尝试这个是因为,当我使用$sf_names文件信息从该特定文件中读取数据时,我收到以下错误。

  

警告:文件(spectrum / raid_info.txt):无法打开流:参数无效

关于如何更改从等于手动创建的数组的文件中加载的数据,请帮助我array_diff()。它可以用于解决上述错误。感谢。

1 个答案:

答案 0 :(得分:0)

默认情况下,file()返回的值包含每行末尾的换行符。 FILE_IGNORE_NEW_LINES标志可用于从每个值中删除换行符。

$s_types = file('spectrum/spectrum_info.txt', FILE_IGNORE_NEW_LINES);

有关详细信息,请参阅http://php.net/manual/en/function.file.php