Sönke Tesch: Schleife zählt nicht

Beitrag lesen

Mit folgendem Script möchte ich erreichen, dass bestimmte Tabellen einer Datenbank nicht angezeigt werden. Dazu möchte ich '$arr_tablenames[$i]' mit $array[$ii] vergleichen.

$array = array('reluserhardware', 'rechnerDaten', 'geraete', 'user');

$num_array = count($array);

// Ausgabe aller Tabellen - der in '$array' benannten

Vorneweg: Du solltest Dir als erstes mal angewöhnen, wenn schon nicht für Dich, dann doch wenigstens für die Öffentlichkeit etwas Struktur in Deinen Code zu bringen.

1 $ii = 0;
   2 for ($i = 0; $i < $num_tables; $i++)
   3  {
   4   if ($ii < $num_array)
   5     {
   6      if ($arr_tablenames[$i] == $array[$ii])
   7        {
   8         echo $arr_tablenames[$i]," <= verbergen<br>";
   9         $ii++;
  10        }
  11       else
  12        {
  13         echo $arr_tablenames[$i],"<br>";
  14        };
  15     };
  16  };

..dann wäre Dir vielleicht auch aufgefallen, wo genau $ii eigentlich erhöht wird und warum das nicht passiert. Solange der aktuelle Tabellenname nicht mit dem ersten, nicht auszugebenen Namen übereinstimmt (Zeile 6), wird $ii auch nicht erhöht (Zeile 9).

Du brauchst schon eine zweite Schleife, um den aktuellen Namen mit _allen_ Einträgen der nicht auszugebenden zu vergleichen. Oder, schneller und einfacher, eine Funktion namens in_array(): http://www.php.net/manual/de/function.in-array.php.

Gruß,
  soenk.e

PS: Den faux-pas in der Mitte von Zeile 8 lassen wir mal unter den Tisch fallen :)