php vergleich

  • PHP
    $string = "abced";
    $number= 0;
    if($string == $number){
    	echo "$string ist gleich $number;";
    }


    ich dachte ja er sagt das die beiden nicht gleich sind aber die ausgabe ist:
    abced ist gleich 0;





    ich weiß nicht wiso :(




    ich wollte eigentlich nur testen ob der string eine zahl ist und habe mit einer noobvariante geprüft if($value = $value*1) aber das ergebniss ist leider nicht wie erwartet :(

  • nimm doch is_numeric()
    =)
    btw -
    $a = '0';
    is_numeric($a) === true =)



    ... aber das muss ich jetzt auch mal testen.



    edit:
    Roland


    Zitat von http://stackoverflow.com/questions/8671942/php-string-comparasion-to-0-integer-returns-true


    'a string' == 0 also evaluates to true because any string is converted into an integer when compared with an integer. If PHP can't properly convert the string then it is evaluated as 0. So 0 is equal to 0, which equates as true.


    Gut zu wissen.


    Also php versucht 'string' zu konvertieren. ZB für den Fall
    echo '1' + 5;
    Dann würde aus str '1' ein int 1.
    Weil er nun "abcde" nicht in einen int wandeln kann, kommte eine Null bei raus.
    Und 0 == 0.


    Ich persönlich finde das Verhalten ziemlich dämlich. Wer rechnet denn mit strings? :D

  • cottton ah danke
    also wenn ein verleich ist und die beiden seiten des verlgleiches nicht von selben typ sind... werden sie in gleiche typen umgewandelt.




    bei den dreifachen gleichheitszeichen würde bei bei mein konkreten fall immer false rauskommen.


    kann es ja nochmal versuchen zu erklären ;)



    ich möchte wissen ob
    $variable = '5'; Eine zahl ist
    bei '5' functionirt das auch noch.
    aber
    $variable = 'abcd';
    sagt er dann auch es ist eine zahl mit meiner methode: if($variable*1 == $variable)...




    Hintergrund des ganzen: bei einer sql abfrage werden alle werte als strings ausgegeben auch id'S, ich möchte aber das ich zahlen habe -.- ^^

  • oh damnd meine letzte aussage ist falsch


    "ich möchte aber das ich zahlen habe"


    ich möchte das zahlen als zahlen erkannt werden und strings als string bleiben^^


    jetzt habe ich eine idee ich mache einen string zum integer und diesen integer dann wider zum string.
    diesen vergleiche ich dann mit den original wenn er gleich ist dann ist es eine zahl^^
    mal testen
    edit:

    PHP
    $variable = "5";
    if((string)(int)$variable == $variable){
    echo "$variable ist eine zahl";
    }


    ausgabe: 5 ist eine zahl
    und wenn ich "abc" mache dann kommt keine ausgabe juhu^^

  • ^^
    ich will das $variable1 in diesen fall z.b. als zahl behandelt wird und nicht als string
    $variable1 = "5";
    $variable2 = "abc";
    $variable3 = "4d";

  • So, ...
    sowas mach ich gerne und es lässt mir auch keine Ruhe bis es funktioniert :D


    Und ich wette dafür gabs schon ne php func :D


    btw - wollte 'boolean' usw mit reinnehmen, aber das macht keinen Sinn. Denn ein bool ist ja nun mal ein bool und braucht nicht geändert werden.
    Und strings bleiben unberührt. Also fällt 'string' auch weg =)


    EDIT:
    konnts nicht lassen :D
    jetzt isses perfect:

  • Ich frage mich ja immer noch was das für Daten sind das so unterschiedliche Sachen drinstehen können.. Auch wenn es jetzt funktioniert, vielleicht solltest du deine Datenstruktur überdenken, nur so als Tipp ;)


    LG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!