2010-12-09 19 views
1

Ich habe die folgende Funktion, die ich weiß, sollte TRUE zurückgeben, aber es wird nicht.Warum funktioniert diese Funktion nicht?

function myFunc($str,$array) 
{ 
    foreach($array as $k=>$v) 
    { 
    if(strtolower($v) == strtolower($str)) 
    { 
     return TRUE; 
    } 
    } 
    return false; 
} 

Diese Funktion innerhalb einer Klasse in einer if-Anweisung if($this->myFunc($something, $array)){

Egal, was ich tue, es ist wahr wird bestätigt, auch wenn ich einen Text über die Rückkehr des Nutzechos verwendet wird; und das wird angezeigt. Jede Hilfe für etwas, das mir fehlt, das wäre großartig.

Es tut uns leid, die Codes nicht zu veröffentlichen.
Meine Array druckt die folgenden

Array 
(
[0] => -1 
[1] => Platinum 
[2] => 169 
) 

und

$something = '-1'; 

ich true zurück, wenn ich versuche, -1 existiert. Das Problem, das ich nicht denke, ist, wenn der Wert im Array ist. Das Problem, das ich habe, ist, warum es nicht als wahr zurückkommen wird, es wird einen Wert zurückgeben, aber es wird nichts zurückgeben. Ich habe versucht mit in_array und die Funktion immer noch nicht als wahr zurückgegeben, weshalb ich diese Methode ausprobiert. Könnte das ein Problem mit meiner PHP-Version sein? Ich habe strtolower verwendet, weil diese Funktion auf der ganzen Seite wiederverwendet wird, um nach anderen Werten zu suchen.

Dank

+1

Bitte geben Sie den Inhalt von $ str und $ array. :) – Teekin

+1

Ich stimme zu Stick ein var_dump ($ str); var_dump ($ array) am Anfang der Funktion. – GWW

+1

haben Sie debugged mit print_r auf Ihrem Array? – wajiw

Antwort

6

Ich sehe nicht, gar nichts falsch mit Ihrer Funktion, sondern als Alternative können Sie versuchen: die Antwort

return in_array(strtolower($str), array_map("strtolower", $array)); 
+0

Ich sehe auch nichts nicht falsch ... – Xeoncross

+0

+1, im Wesentlichen die gleiche Funktion, sondern stattdessen zwei Schleifen. – Jonah

1

This function is used inside a class in an if statement if($this->myFunc($something, $array))
Hat Modifizieren der if-Anweisung an die folgende Änderung?

if(myFunc($something, $array))

Nur ein Gedanke wie vielleicht $this nicht zur richtigen Zeit ausgewertet.

+0

Wenn ich $ this lösche, wird ein Fehler ausgegeben, dass die Funktion nicht definiert ist. – bradg

0

Sie können dazu in_array oder strcmp verwenden.

Rückgabewerte

Returns < 0, wenn str1 kleiner als str2;

0, wenn str1 größer als str2 ist, und 0, wenn sie gleich sind

Verwandte Themen