Это содержимое моего файла spectrum_info.txt
:array_diff() в PHP дает неожиданную информацию
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
информацию о файле для чтения данных из этого конкретного файла, я получаю следующую ошибку.
Предупреждение: Файл (Спектра/raid_info.txt): не удалось открыть поток: недопустимый аргумент
Пожалуйста, помогите мне о array_diff()
как, как изменить данные, загруженные из файла, равным создать вручную массив. Это может быть полезно при решении указанной выше ошибки. Благодарю.
вам нужно исправить файл() первый – nogad
RTFM: [файл()] (http://php.net/manual/en/function.file.php) 'Возвращаемые значения: ... Каждый элемент массива соответствует строке в файле, а новая строка все еще прикреплена', поэтому array_diff работает отлично, но вы сравниваете' "foo" == "foo \ n" ' –
@MarcB Похоже на то, что файл не может быть открыт. – Mike