array_diff возвращает строку без массива - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь очистить мою базу данных

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 всех пользователей с новой строкой, такой как:

Mike \ nRobert \ nJhon \ nPolly

но возвращает всех пользователей, прикрепленных между ними

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Вы можете попробовать вот так,

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); 
}
0 голосов
/ 29 декабря 2018

Вы можете использовать implode для добавления новой строки

$comma_separated = implode("\n", $final);
...