2017-05-04 2 views
1

Ich habe eine Funktion innerhalb einer Klasse, jedes Mal, wenn ich benutze ich habe Fehler undefined Funktion in_array_r() innerhalb von foreach. Aber wenn ich es außerhalb der Klasse als normale Funktion verwende, funktioniert es. Ich möchte dies innerhalb der Klasse verwenden, damit ich nicht auf jeder Seite anrufen werde.PHP: Returning Funktion Wert an sich nicht funktioniert

public function in_array_r($needle, $haystack, $strict = false) { 
     foreach ($haystack as $item) { 
      if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) { 
       return true; 
      } 
     } 
     return false; 
    } 

Antwort

1

Die Funktion ist rekursiv - sie ruft sich selbst auf. Wenn Sie es in eine Klasse (als Methode) einfügen, müssen Sie den Verweis auf in_array_r() innerhalb des Methodenrumpfs aktualisieren.

Dieses:

. . .(is_array($item) && in_array_r($needle, . . . 

Becomes:

. . .(is_array($item) && $this->in_array_r($needle, . . . 
1

Sie müssen die Methode auf das Objekt übertragen.

$this->in_array_r(); 
+0

können Sie auch Ihren Code verbessern und false zurückgeben, wenn $ haystack false, als einfache Überprüfung. – zeflex