You are not logged in.

wcf.regNote.message

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

1

Wednesday, August 27th 2008, 2:42pm

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.

sourceforge

Beginner

Posts: 3

  • Send private message

2

Thursday, August 28th 2008, 12:20am

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

imset

Beginner

Posts: 5

  • Send private message

3

Thursday, August 28th 2008, 1:16am

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 ;)

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

4

Thursday, August 28th 2008, 8:35am

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.

imset

Beginner

Posts: 5

  • Send private message

5

Thursday, August 28th 2008, 1:45pm

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.

Prometheus

Administrator

  • "Prometheus" started this thread

Posts: 3,278

  • Send private message

6

Thursday, August 28th 2008, 3:45pm

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 ;)
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

wcf.user.socialbookmarks.titel