FAQ
Buscando un error en mi codigo, me he encontrado con lo siguiente

echo '_connection' == 0; // true

Como es posible que el codigo anterior me de true???

Search Discussions

  • Pablo Pazos Gutierrez at Apr 13, 2008 at 11:34 pm
    Buenas,

    == es una funcion booleana de 2 parametros, por eso da o true o false.
    El tema con tu codigo es que un string no vacio comparado con 0 nunca puede
    dar true, es como comparar manzanas con peras, _connection deberia ser una
    variable para que pueda dar true dicha comparacion.

    saludos,
    Pablo Pazos Gutierrez
    www.SimpleWebPortal.net

    ""Javier Martínez Fernández"" <ecentinela@gmail.com> escribió en el mensaje
    news:5B035873-1B10-4AB7-A3C4-DFEF8D1731D0@gmail.com...
    Buscando un error en mi codigo, me he encontrado con lo siguiente

    echo '_connection' == 0; // true

    Como es posible que el codigo anterior me de true???
  • Martin Scotta at Apr 14, 2008 at 12:05 am
    Javier y Pablo

    El "operador" == toma 2 parametros, supongamos "a" y "b" y los
    compara, devolviendo si son iguales o no.
    En el caso del problema "a" = '_connection' y "b" = 0
    Por otro lado, se estan comparando 2 elementos de distinto tipo, uno
    es un string (a) y otro es un int(b). Cuando PHP encuentra que se
    estan comparando este tipo de datos convierte la cadena a un entero.

    <?php
    var_dump('martin' == 0); // true: 0 == 0
    var_dump('1martin' == 1); // true: 1 == 1
    var_dump('00013' == 13); // true: 13 == 13
    var_dump(15045 == '0x3AC5'); // true: 15045 == 0x3AC5
    ?>

    Cuando se quiere compara, no solo valor, sino tambien tipo de dato se
    necesita utilizar los operadores === y !==
    de manera que

    <?php
    var_dump('martin' === 0); // false: string != int
    var_dump('1martin' === 1); // false: string != int
    var_dump('00013' === 13); // false: string != int
    var_dump(15045 === '0x3AC5'); // false: string != int
    ?>

    podria pensarse el operador === como
    <?php
    function == ($a, $b)
    {
    return gettype($a) == gettype($b) && $a==$b
    }
    ?>

    Aunque al tratarse de objetos los operadores === y !== realizan una
    comparacion minusiosa de todos los miembros internos de los objetos.
    Este operador es muy util en cuanto a tratamiento de errores

    <?php

    if(($sck = socket_create(/*...*/)) === false)
    {
    # FALLO
    }
    # OK
    ?>

    Espero te sirva.
    Martin

    On Sun, Apr 13, 2008 at 8:34 PM, Pablo Pazos Gutierrez
    wrote:
    Buenas,

    == es una funcion booleana de 2 parametros, por eso da o true o false.
    El tema con tu codigo es que un string no vacio comparado con 0 nunca puede
    dar true, es como comparar manzanas con peras, _connection deberia ser una
    variable para que pueda dar true dicha comparacion.

    saludos,
    Pablo Pazos Gutierrez
    www.SimpleWebPortal.net

    ""Javier Martínez Fernández"" <ecentinela@gmail.com> escribió en el mensaje
    news:5B035873-1B10-4AB7-A3C4-DFEF8D1731D0@gmail.com...

    Buscando un error en mi codigo, me he encontrado con lo siguiente

    echo '_connection' == 0; // true

    Como es posible que el codigo anterior me de true???


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


    --
    Martin Scotta
    http://www.echess.com.ar/

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedApr 13, '08 at 2:51p
activeApr 14, '08 at 12:05a
posts3
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase