zippex: leere "assoziative" Spalten entfernen

Beitrag lesen

Irgendwie komme ich manchmal selbst auf eine akzeptable Lösung, gerade dann, wenn ich vorher einen Beitrag in einem Forum geschrieben habe. Habe doch keine For-Schleifen benutzen müssen, ich kann aber nicht einschätzen ob das hier jetzt bei wirklich vielen Datensätzen performant ist.
Wenn jemand eine bessere Lösung findet freue ich mich natürlich :)
Falls sonst jemand mal über dieses - sicher nicht alltägliche - Problem stoßen sollte, hier meine Lösung:

in $result steckt also das Ergebnis-Array der Datenbankabfrage

// ich erzeuge ein assoziatives Array für alle Feldwerte die NULL sein können und nehme pauschal mal an, dass alle keinen Inhalt haben (0)

$write = array("name" => 0, "tel" => 0);

// in dieser Schleife durchsuche das Ergebnisarray und setze, wenn ein Wert existiert, den entsprechenden Wert in $write auf 1

reset ($write);
while (list ($key, $val) = each ($write)) {
   foreach ($result as $teilresult) {  // je Datendatz Benutzer
 if ($teilresult[$key] != "") $write[$key] = 1;
   }
}

// im Array $write steht jetzt genau drin, welche Felder ich in die Tabelle schreiben muss, weil Daten enthalten sind (1) oder welche Felder leer sind (0)

reset ($write);
while (list ($key, $val) = each ($write)) {
   echo "$key => $val\n";
}