dedlfix: Unterscheidung zwischen NULL und 0

Beitrag lesen

echo $begrüßung;

Ich übergebe einen Wert per Parameter (Index eines Arrays), kann also eine gültige 0 sein. Diese 0 ist dann vom Typ string und ich wandle ihn in integer um ...
  if ( gettype( $bild_nr ) == string ) $bild_nr = $bild_nr *1; // integer erzwingen

Recht umständlich.
Ist string eine von dir definierte Konstante? Wenn nicht, solltest du Stringbegrenzer ('', "") um Strings verwenden.
Besser wäre hier jedoch die Funktion is_string($bild_nr). Für das Umwandeln muss man auch keine Rechenoperation bemühen. Durch einen Typecast kommt viel besser zum Ausdruck was du eigentlich vorhast.
Und noch besser wird es, wenn du die Funktion intval() verwendest. Die liefert auf alle Fälle eine Integer-0 bei Werten die keine Zahl darstellen, auch wenn man sie mit einem Array oder einem Objekt füttert.

for ( $i=0; $i<count( $bilder ); $i++ ) {
    echo "<br><input type='radio' name='bild_nr' value='".$i."'";
    if ( $bild_nr === $i ) echo " checked";

Wenn du das intval($bild_nr) gleich hier einbaust, kannst du dir die obige Prüfung ganz sparen.
      if (intval($bild_nr) == $i)
        echo " checked";

echo "> ".$bilder[$i][0]."\n";
  }

Aus welchem Grund wird $bild_nr eigentlich NULL?
Verlässt du dich etwa auf den register_globals-Mechanismus oder hast du eine Initialisierung von $bild_nr mit einem definierten Wert "vergessen"? Wenn ja, dann sind deine Korrektur- und Typ-Test-Versuche nur Bemühungen, das Kind aus dem Brunnen zu holen. Dann solltest du dich lieber um ordentliches Variablenhandling bemühen.

echo "$verabschiedung $name";