PHP Result-Array von SQL-Query: Keys für Ausgabe ändern?!

Servus!

Folgender Code:
PHP:
$result = mysql_query($sql_firmen);
    if(mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $firmenarray[] = $row;
        }
    }
Dann greife ich auf dieses Array-in-Array zu:
PHP:
if (!empty($firmenarray)) {
    foreach($firmenarray as $firma) {
        $DokumenteFirma = checkDocuments('Firma', $firma['Laendercode']);
...
...
foreach($firma as $key => $value) {
                //START Markieren von fehlenden/bald aublaufenden Dokumenten
                if (in_array($key, $DokumenteFirma)) {
...
echo "<span class=\"missing\">".$key.": ".$value."</span>";
...
Um es kurz zu erklären: Ich habe eine Tabelle mit Firmen und deren Dokumenten, die Funktion checkDocuments() gibt ein array zurück welche Dokumente unter welchen Umständen notwendig sind, die Werte sind ident mit den keys (=Spaltennamen in der Datenbank). Wenn ein key in dem Rückgabearray ist, dann soll unter anderem eine Ausgabe erfolgen.

Jetzt zu meinem Problem:
Die Ausgabe mit echo $key ist natürlich nicht sehr schön. Die Spaltennamen haben logischerweise keine Umlaute und Leerzeichen, der Output schaut also nicht schön aus und ist nicht leicht verständlich. Ich kann aber auch nicht bei der SQL-Query ein "SELECT Doc1 AS 'Dokument #1 (irgendwas)'" machen weil ich dann nicht mehr mit dem Rückgabewerten von checkDocuments() vergleichen kann (in_array($key, $DokumenteFirma)).

Wie stelle ich das an, dass ich trotzdem für jeden $key eine "Übersetzung" habe, die ich dann zusammen mit dem entsprechenden $value ausgebe? Geht das schöner als mit einem if bzw. switch case (if $key == 'Doc1' ? $output = 'Dokument #1 (irgendwas)' : '') vor dem echo?

Ich habe auch schon probiert jeden $value durch ein array(Übersetzung, value) zu ersetzen, ist bei einem Versuch geblieben. Sackgasse?
 
Kannst du nicht sowas in der Art machen:

Code:
SELECT id, CONCAT("doc_",id) AS bla FROM blup

Nachtrag:
Ich befürchte ich hab dein Problem missverstanden.
 
ich würde das als typisches lokalisierungsproblem ansehen ...

ich würde die ausgabe durch eine funktion filtern, die ggf. eine lokalisierung des wertes vornehmen kann ...

also ansetzen bei dem echo .... statt $key benutzt du foobar($key)

wobei du diese funktion halt noch deffinieren musst ...

du kannst z.b. ein wörterbuch mit ersetzungen führen, oder programmatisch den string ändern (tausche _ gegen leerzeichen, etc), oder auch im zweifel den originalstring zurückgeben ...

zudem würde ich aus performance gründen die statischen string teile des echo nicht in doppelte anführungszeichen setzen, sondern in einfache (dadurch werden diese teile nicht extra vom parser behandelt) ... die variablen setzt du ja scheinbar sowieso mittels concat-operator(".") ein ...
 
[...]
also ansetzen bei dem echo .... statt $key benutzt du foobar($key)
Das ist ne gute Idee, und die Funktion foobar($key) könnte dann so aussehen:
PHP:
function foobar($key) {
if(isset($key)) {
  switch($key) {
    case 'Doc1':
      $output = 'Dokument #1 (irgendwas)';
      break;
    case 'DocABC':
      $output = 'Das ABC-Dokument gem. § 102a';
      break;
    case '...':
      ...
      ...
    default:
      $output = $key;
  }
}
else {
  return 0;
}
return $output;
}
zudem würde ich aus performance gründen die statischen string teile des echo nicht in doppelte anführungszeichen setzen, sondern in einfache (dadurch werden diese teile nicht extra vom parser behandelt) ... die variablen setzt du ja scheinbar sowieso mittels concat-operator(".") ein ...
:thumb_up: Ich programmiere schon seit etlichen Jahren mit PHP und das höre/lese ich zum ersten mal. Ich habe gerade noch im PHP: echo - Manual nachgeschaut und auch dort wird dieser Umstand nicht erwähnt. Ist auf jeden Fall ein guter Tipp, Danke!
Sprich:
PHP:
echo "Die Zahl lautet $number";
echo 'Die Zahl lautet '.$number;
//Gibt beides das selbe aus ABER
echo 'Die Zahl lautet $number'; 
//Gibt "Die Zahl lautet $number" aus
Habe ich das richtig verstanden? Sprich wenn ich einfach nur ein echo mit etwas HTML drinnen habe, dann besser einfache Anführungszeichen verwenden?! Doppelte Anführungszeichen nur dann verwenden, wenn ich mehrere Variablen ausgebe und es daher mit dem Punkt-Operator zu unübersichtlich/kompliziert wird ...
Gibt es sonst Einschränkungen beim einfachen Anführungszeichen? echo über mehrere Zeilen etc.?
 
einfache anführungszeichen -> einfache string-literale
doppelte anführungszeichen -> string-literal das noch zwecks ersetzung von variablen und escape sequenzen extra durch einen parser läuft
 
Zurück
Oben