array_diff возвращает строку без массива
Я пытаюсь почистить свою БД
if($var == true){
$db = file('db.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
shuffle($db);
$db2 = file('db2.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$cleaner = array_unique ($db);
$final = array_diff ($cleaner, $db2);
file_put_contents('db3.txt', $final);
}
он должен поместить в db3.txt всех пользователей с новой строкой, такой как:
Майк \nRobert\nJhon\nPolly
но он возвращает всех пользователей, прикрепленных между ними
2 ответа
Вы можете использовать Implode для добавления новой строки
$comma_separated = implode("\n", $final);
Вы можете попробовать так,
if($var == true){
$db = file('db.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
shuffle($db);
$db2 = file('db2.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$cleaner = array_unique ($db);
$final = array_diff ($cleaner, $db2);
$final = implode(PHP_EOL, $final_result); // implode it with PHP_EOL
// put content to file with FILE_APPEND parameter but you can ignore if you wish
file_put_contents('db3.txt', $final, FILE_APPEND);
}