Ist ein Array wenn es als Rückgabewert aus einer Funktion kommt nicht automatisch ein Array?
Also ich habe eine Funktion die mir eine Zeichenkette zerlegt und die Rückgabe in ein Array packt. Nun prüfe ich mit in_array ob ein anderes Zeichen in diesem Array vorhanden ist.
PHP Source code
1
if(in_array("X",$meinarray);
Das liefert mir einen Fehler
PHP Source code
1
if(in_array("X",(array)$meinarray);
Das funktioniert
Warum? Die Variable $meinarray ist mit absoluter Sicherheit immer ein Array und ich verstehe einfach nicht wieso ich bei in_array noch mal angeben muss das es sich um ein Array handelt.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten.
Dieses Konto ist und bleibt inaktiv.
Das ist ganz einfach ne Eigenart der Funktion in_array() . Vor Version 4.2 war es garnicht möglich zur Suche ein Array zu verwenden.
Die Funktion geht standartmässig davon aus das du mit einem String suchen willst.
Bleibt dir also nix andres übrig als dich dran zu gewöhnen. Natürlich kannst das auch als "bug" melden in der Hoffnung die ändern das mal, dass diese Funktion das automatisch erkennt ob string oder array
Warum sollte die Funktion standardmäßig einen String erwarten? Die ist doch dazu da im Parameter 1 innerhalb eines Arrays unter Parameter 2 angegeben zu suchen. Von daher wäre es meiner Meinung nach sogar ein Fehler wenn ich als Parameter 2 auch einen String angeben könnte. Finde ich schon merkwürdig. Meine Variable ist jedenfalls mit Sicherheit ein Array und kommt auch als Array aus der Funktion raus.
Naja ich konnte es ja lösen hat mich nur gewundert.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten.
Dieses Konto ist und bleibt inaktiv.
Oh warte ich hab dein bsp. Code glaub ich nicht richtig gelesen, bei dir ist ja eh $needle ein String.
Hm ja eigentlich solltest du das zu überprüfende Array nicht extra mitels array() deklarieren, denn wie du schon sagstest ist die funktion ja dazu da arrays zu übprüfen.
Vieleicht hast du eine ältere php version in der das evtl ein bug war?
Du kannst aber auch alternativ array_search() benutzen.