Coder Board Community (http://www.coder-board.de/index.php)
- Coding (http://www.coder-board.de/b4_Coding.html)
-- PHP (http://www.coder-board.de/b6_PHP.html)
--- Ist ein Array wenn es als Rückgabewert aus einer Funktion kommt nicht automatisch ein Array? (http://www.coder-board.de/t2771_Ist-ein-Array-wenn-es-als-Rueckgabewert-aus-einer-Funktion-kommt-nicht-automatisch-ein-Array.html)
Geschrieben von Prometheus am 27.08.2008 um 14:42:
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.
Geschrieben von sourceforge am 28.08.2008 um 00:20:
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
Geschrieben von imset am 28.08.2008 um 01:16:
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
Geschrieben von Prometheus am 28.08.2008 um 08:35:
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.
Geschrieben von imset am 28.08.2008 um 13:45:
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.
Geschrieben von Prometheus am 28.08.2008 um 15:45:
Die PHP Version auf dem Server ist die aktuell verfügbare. Also auf keinen Fall veraltet.
array_search ist übrigens genau das gleiche. Ich versteh es nicht aber auch egal das Ergebnis ist ja so wie ich das möchte
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH