Thomas N: Einfacher Formmailer, Danke-Seite als .pl, mit "unbedingtem" if

Beitrag lesen

Servus.

use didaktik;

Also das _if ($rc)_ ist mein Problem. Was passiert da?

Schau noch mal in mein "Erklärposting", da habe ich es erklärt:

Es war nicht das Problem, dass ich nicht das "Erklärposting" angesehen hätte, sondern, es für mich keine Erklärung war.

Im logischen Kontext wird $rc folgend ausgewertet:

Welcher "logische Kontext"?

  • Wenn $rc zu 1 ausgewertet wird (zB durch 1, 2, 'blah',
       aber Vorsicht: auch '000', da es ein String ist)
       ist die Bedingung wahr
  • Wenn $rc zu 0 ausgewertet wird (zB durch undef, 0, '')
       ist die Bedingung falsch.

Ich habs inzwischen kapiert und mach mal eine einfache Formulierung des Problems, aufgepasst:)
Wenn die Variable $rc durch if ausgewertet wird (und das wird sie, auch wenn nur if ($rc) dasteht, also kein "sichtbarer" Operator), dann ist die "unsichtbare" Bedingungsabfrage, ob der Wert der Variable $rc true oder false ist. Was true und false ist, ist eine andere Frage. In unserem Bsp. hatte die Variable $rc entweder den Wert 1 oder 0, dass heisst hatt sie 1 (true), so wurde die if-Bedingung ausgeführt, hatte sie 0 (false), wurde die else (zum spazieren, bisschen Humor muss ja sein) ausgeführt.
Ganz einfach, oder?

$rc wird in dem if($rc) Kontext umgewandelt in entweder 1 oder 0 (wahr/falsch). falsch kommt immer dann, wenn $rc undef (der undefinierte Wert), 0 oder '' ist, ansonsten ist es wahr.

Durch diesen Zusatz zu Deinem "Erklärposting" bin ich so langsam dahinter gekommen, bin ich doch, oder?

Siehe dazu zB das Kapitel 4 in "Einführung in Perl" (O'Reilly).

Das war wohl Intuition, hab heute das Buch gekauft, wollt ich aber gar nicht, war wegen einem andern Buch im Laden. Welche Seite ist es denn, so im überfliegen bin ich noch nicht dazu gekommen.

$color = ($rc ? '#CFCFCF' : '#EFEFEF');
    $rc    = 1 - $rc;

Egentlich ganz einfach:
$color wird gesetzt auf:
wenn $rc == 1 ist, auf '#CF-....'
ansonsten auf '#EF....'
Wenn $rc in der nächsten Zeile den Wert 0 hat, wird es 1 (da 1-0==1)
wenn $rc in der nächsten Zeile den Wert 1 hat, wird es 0 (da 1-1==0)

?
$rc    = 1 - $rc;
$rc    = 1 - 0;   # 1-0 soll 1 sein? Nach welcher Logik gehst Du hier vor?

Thomas N == Neu-User;)

Der Thread wandert bald ins Archiev, oder?