Der Martin: Vereinfachung von PHP-Code

Beitrag lesen

Hallo,

$p += (bool)count($position->position);

das geht in vielen Programmiersprachen gut; es ist aber heikel, weil man sich damit auf den numerischen Wert des boolschen Ausdrucks true verlässt. Der ist in den meisten Sprachen 1; wirklich verlassen darf man sich aber nur auf !=0. Ich erinnere mich dunkel, dass ich auch schon mit älteren 16bit-Compilern zu tun hatte, in denen ein boolsches true intern durch den Zahlenwert -1 (x0FFFF) dargestellt wurde.

Es reicht

if (count($position->position));
    $p++;

Nein, so bitte nicht! Ein Semikolon nach der Klammer des if-Statements, ohne dass eine Anweisung oder ein Anweisungsblock folgt, ist syntaktisch erlaubt, ergibt aber keinen Sinn und ist fast immer ein logischer Fehler.
Anders beim Kopf einer for-Schleife: Hier ist es möglich, die Anweisungen, die den Schleifenrumpf ausmachen, stattdessen in der Klammer zu notieren, wenn sie alle als Ausdruck formulierbar sind (und keine weiteren Kontrollstrukturen enthalten). Dann kann sowas wie

for ($i=0; $i<100; $array[$i++]=0);

durchaus Sinn ergeben.

So long,
 Martin

--
Wer morgens zerknittert aufsteht, hat den ganzen Tag Gelegenheit, sich zu entfalten.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(