2017-05-04 7 views
1

私はクラスの中で関数を使用していますが、使用するたびにエラーがあります。定義されていない関数in_array_r()がforeachの内部にあります。しかし、クラスの外でそれを通常の関数として使用すると動作します。私はクラス内でこれを使用したいので、すべてのページを呼び出しません。PHP:関数の値を返すこと自体が機能しない

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

答えて

1

この関数は再帰的です。つまり、それ自体を呼び出しています。クラスの中に(メソッドとして)入れると、メソッド本体内の参照をin_array_r()に更新する必要があります。

この

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

は次のようになります。あなたがオブジェクトにメソッドを割り当てる必要が

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

$this->in_array_r(); 
+0

また、単純なチェックとして$ haystack falseの場合は、コードを改善してfalseを返すことができます。 – zeflex

関連する問題