2010-12-08 7 views
1

こんにちは配列内で検索する機能を記述しますが、ループが見つけたときにそのことは何かその、最後に真の値のチェックを再調整ではない任意のアイデアと一致しforeachループのリターン問題

function findinArray($find,$array){ 
    foreach($find as $key => $value){ 
     if (in_array($find,$array)) { 
      return true; 
     }else{ 
      return false; 
    }  } 
} 
if(findinArray(array("a","b"),array("a")){ 
     echo "Match"; 
} 

おかげ

+1

関数が何をすべき? * found *条件は何ですか? –

答えて

7

機能に変更する あるべきin_array()の配列は一度だけ返すことができ、最初の引数を渡しています。最初の一致でtrueを返したい場合はfalse、一致するものが見つからない場合はfalseを返します。以下のバージョンを試してください。

function findinArray($find, $array) { 
    foreach ($find as $value) { 
     if (in_array($value, $array)) { 
      return true; 
     } 
    } 
    return false; 
} 

if (findinArray(array("a","b"), array("a")) { 
    echo "Match"; 
} 

(また、あなたはforeachの中の値を使用する方法でエラーをしていた、とあなたは}を忘れてしまった)

+0

これは私が必要としていることです。ありがとうございました。間違いはありましたが、投稿している間にそれが発生しました。今考えました。 – r1400304

+1

あなたの関数は$ arrayを全く使用しません。 – rik

+0

おっと...あなたは正しいです。私は間違った価値を変えた。 –

4

をすべき動作しませんin_array($value, $array)となります。しかし、ちょうどcount(array_intersect())を行うことができます。

0

あなたはあなたの関数は、常に最初の反復に戻りますので、それは価値が

function findinArray($find,$array){ 
    foreach($find as $key => $value){ 
     if (in_array($value,$array)) { 
      return true; 
     } 
     return false; 
    }  
}