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:
1:
if(in_array("X",$meinarray);
Das liefert mir einen Fehler
php:
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.
hast du mal geschaut ob nach der rückgabe $meinarray auch wirklich ein array ist?? also per var_dump
bzw kkannst ja auch is_array
benutzen
28.08.2008 00:20
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von sourceforge am 28.08.2008 um 00:20 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
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
28.08.2008 01:16
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von imset am 28.08.2008 um 01:16 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
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.
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.
28.08.2008 13:45
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von imset am 28.08.2008 um 13:45 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.