Re: PHP-Frage

Autor: Alexander Holler (holler_at_ahsoftware.de)
Datum: 11. Aug 2003


Hallo Michael,

--On Montag, 11. August 2003 20:56 +0200 Michael Lestinsky
<michael_at_lestinsky.de> wrote:

> langsam aber kontinuierlich bin ich verzweifeln an PHP. Kann irgendjemand
> der Mitleser mir folgendes Verhalten erklären?
>
> michael_at_zaphod:~> php -v
> PHP 4.3.0 (cli) (built: May 15 2003 20:40:44)
> Copyright (c) 1997-2002 The PHP Group
> Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
> michael_at_zaphod:~> echo '<?php if ("rk" == 0) echo "Jepp\n"; ?>' | php
> Jepp
> michael_at_zaphod:~> echo '<?php if ("rk" == 1) echo "Jepp\n"; ?>' | php
> michael_at_zaphod:~> echo '<?php if ("rk" == true) echo "Jepp\n"; ?>' | php
> Jepp
> michael_at_zaphod:~> echo '<?php if (0 == true) echo "Jepp\n"; ?>' | php
> michael_at_zaphod:~>
>
> "rk" ist also gleichzeitig 0 und true, aber 0 ist nicht true?

true ist != false -> != 0 aber nicht unbeding 1. Beim Vergleich eines
Strings mit einer Zahl wandelt php anscheinend den string in eine 0 was
durchaus regelkonform sein kein. Kommt wohl darauf an, wie php den
Numerischen Wert eines Strings behandelt. Gleiches gilt wohl für den
Vergleich eines Strings mit einem Boolean (!= Zahl).

Dein Trugschluss ist, das du aus "rk" == 0 und "rk" == true meinst folgern
zu können, 0 müßte true sein. Das ist aber so nicht richtig. Da beide
Vergleiche eigentlich unsinnig sind, kommt es auf die Definitionsweise
derer an:
------------
When a string is evaluated as a numeric value, the resulting value and type
are determined as follows.

The string will evaluate as a float if it contains any of the characters
'.', 'e', or 'E'. Otherwise, it will evaluate as an integer.
------------
A boolean TRUE value is converted to the string "1", the FALSE value is
represented as "" (empty string). This way you can convert back and forth
between boolean and string values.
------------

Gruß,

Alexander


Dieses Archiv wurde generiert von hypermail 2.1.7 : 11. Aug 2003 CEST