"10.0" != "10" ergibt false?

maxOn-line

Grünschnabel
Hallo,

bin neu hier weil ich ein Problem habe *g* ...
um das ganze kurz zu erklären... Ich habe eine Datei per fscanf eingelesen und einen array in dem jede Zeile ein neuer eintrag ist, der als string gespeichert wird. In dem Array suche ich nach Einträgen mit "10" als Wert um von dort an Werte in ein neues array zu speichern. Unter anderem kommt es vor, dass einer dieser werte "10.0" ist. Wenn ich dann also das array weiterdurchsuche soll er "10.0" überspringen und nicht das gleich machen wie bei "10".

Da es Strings sing dachte ich, dass ich einfach eine Bedingung $array[$stelle] == "10" nutzen kann um das Einlesen der werte zu starten... er reagiert aber bei $array[$stelle] = "10.0" genau so wie bei $array[$stelle] = "10"... ;-] .. soll er aber nciht.

Was kann ich da machen?

Gruss, maxOn
 
Vielleicht noch zur Erklärung:

PHP führt automatisch eine Typkonvertierung durch, d.h. dass false das gleiche ist wie 0, 0.0 "", oder array(), NULL. Aber jedoch für die jeweiligen Typen (0 - Integer, 0.0 - Float, ""-Zeichenkette, array() - Array)

Bei TRUE ist es sogar noch "schlimmer": Alles was nicht 0, 0.0, "", array(), NULL, oder ein objekt ohne Mitgliedsvariablen ist,wird bei einer boolschen Überprüfung automatisch TRUE
http://de.php.net/manual/de/language.types.boolean.php

Um jetzt wirklich zu wissen ob es das "richtige" False/TRUE ist kann man entweder mit den === - Operator (3 Gleichheitszeichen), wie Matthias schon geschrieben hat, oder man überprüft den Rückgabewert von gettype().

So das wärs mal zu dem Hintergrund von dem allem :-)
 
jopa,

tripple = hat's gebracht. :-D

danke für die antworten und die Erklärung.
Gut zu wissen wie php in diesen fällen reagiert...

gruss, maxOn
 
Zurück