echo $begrüßung;
Die Klammern kamen mir auch spanisch vor, hab sie aber nicht direkt als Ursache vermutet. Es ist jedoch tatsächlich so, dass durch die Klammern das Ergebnis des Ausdrucks nach boolean umgewandelt wird. Lässt man die Klammern weg bekommt man das gewünschte Ergebnis: eine Ressourcenkennung.
Das Ergebnis eines "or"-Ausdrucks ist immer boolean, da wird nix umgewandelt. Nur hat eben "=" einen hoeren Rang als "or", d.h. wenn Du die Klammern weglaesst, also
$result = $a or $b;
dann wird quasi
($result = $a) or $b;ausgefuehrt, und die Zuweisung an $result hat mit dem Ergebnis von "or" nix zu tun.
Interessante Thematik. Da ich das erst nicht so recht glauben wollte, habe ich damit etwas experimentiert, und dabei auch gesehen, dass
$c = false or true;
if ($c) ...
nicht das gleiche ist wie
if (false or true) ...
Das sieht man schön an den folgenden Beispielen.
$a = 0 or 23;
var_dump($a);
Ergibt int(0), nicht 23. Trotzdem "wird die 23 ausgeführt", oder genauer gesagt: der zweite Teilausdruck, und das auch erst nachdem die Zuweisung erfolgte.
function foo($x) {
var_dump($x);
return 23;
}
$b = 42;
$b = 0 or foo($b);
var_dump($b);
Ergibt int(0) int(0). Das erste ist die Ausgabe von $x. Daraus folgt, das zu dem Zeitpunkt $b bereits 0 ist und nicht mehr 42, und es auch bleibt. Das Funktionsergebnis von foo() spielt keine Rolle.
echo "$verabschiedung $name";