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); 
}
Другие вопросы по тегам