file_put_contents
перезаписывает файл по умолчанию. Измените его, чтобы использовать режим добавления, и он, вероятно, будет делать то, что вы ожидаете.
file_put_contents('fid.txt', "\n" . $matches[1], FILE_APPEND); // also added a newline to break things up
Еще лучше, вы должны добавить строку и записать в файл только один раз:
$usernames = array();
foreach ($twitter_xml->channel->item as $key) {
// ... stuff ...
$usernames[] = $matches[1];
}
// Save everything, separated by newlines
file_put_contents('fid.txt', "\n" . implode("\n", $usernames), FILE_APPEND);