Der Martin: strpos und andere sehr typenempfindlich?

Beitrag lesen

Hallo,

»» http://de.php.net/manual/de/function.strpos.php
»» "Ist needle  kein String, wird der Parameter in einen Integerwert konvertiert, der dem Ordinalwert des Zeichens entspricht."
Den Satz hatte ich auch im Manual gelesen aber den Sinn nicht verstanden.

was ist daran so kompliziert zu verstehen?

Dann gehe ich jetzt mal davon aus, dass es sinnvoll ist solche Abfragen immer mit einem stringneedle zu machen

Kommt drauf an ...

selbst wenn eine 99%ige Sicherheit vorliegt, dass haystack ein Integerwert ist?

Dann wird er in einen String konvertiert, weil PHP hier aus Gründen der Sinnhafitgkeit zwingend einen String braucht.

»» $_GET['x']= '1234';
»» if(strpos($_GET['x'],'1' ) ){echo'Gefunden';}else{echo'Nicht gefunden';}
»» dürfte Dich auch überraschen.
Nein, die Problematik ist mir seit vielen Jahren bekannt.

Welche Problematik? Dass PHP (ähnlich wie Javascript) ungeniert und eigenmächtig zwischen verschiedenen Datentypen lustig hin- und herkonvertiert? Ja, das ist in der Tat ein Problem von schwach typisierten Sprachen.

So long,
 Martin

--
F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
A: Mein Arzt hat mir Valium verschrieben.
F: Und das hilft?
A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.