Tach!
Hab es auf
if(!$header == "")
geändert und es funktioniert.
Das ist wirklich nicht günstig. Die Laufzeit wird im Rauschen untergehen, aber: $header ist ein String. Wenn du dem ein ! davorsetzt, wird der in den booleschen Kontext gebracht. Das ! negiert den Wert und dann vergleichst du das false oder true mit einen String. Dazu wird der String auch nochmal nach boolean konvertiert.
Du kannst gleich if ($header) verwenden, das kommt auf's selbe raus. '0' ist ebenso false, aber das ist auch bei deinem Konstrukt der Fall.
Außerdem:
$header = '0';
var_dump(!$header == ''); // false
var_dump($header != ''); // true
dedlfix.