Почему переменная определяется как неизвестная?
Разложите запись, и будет ясно:

$txt = $txt /* вот в этом месте $txt используется, но еще не существует */
     . "<b>" . $key . "</b> " . $value . "\n";

$txt = ''; // нужно сначала инициализировать
foreach ($arr as $key => $value) {
  $txt .= "<b>" . $key . "</b> " . $value . "\n";
};
А что непонятного в ошибке?
Пытаетесь приконкатенировать к $txt некоторое значение, предварительно не определив ее.