2011-08-16 30 views
0

配列内の値が見つかった場合は、その配列を検索して親アイテムを返す関数を変更しました。見つかった最初のアイテムを返すのにうまく動作しますが、見つかったすべてのアイテムを返すようにします。私はすぐに配列を返すので、私はそれを仮定しているが、私はそれを "戻って"複数の発見を返すように変更する方法がわからない。配列検索関数を変更して複数の結果を返す

機能:代わりにすぐに戻っての

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

答えて

3

は、単にアレイで$アイテムを追加します。 return falsereturn $your_array(あなたの商品が入っているもの)に交換してください。したがって、$ your_arrayには条件に一致するすべての項目が含まれます。

0

はい、関数から戻ると、実行が完了します。あなたがすでに$ needleと同等であることが分かっているときに、任意の値を返す目的が何に役立つのかは分かりません。単に真実に戻らなければならないようだ。たとえば、あなたが格納した$ matches配列を追加する関数を修正したとしましょう。その中に3つの "foo"要素を持つ配列になるのはどうでしょうか?

0

ここで私はそれを修正するために最後のコードです。迅速な回答ありがとう:)

function in_array_r($needle, $haystack) { 
    $array = array(); 
    foreach ($haystack as $item) { 
     if ($item === $needle || (is_array($item) && in_array_r($needle, $item))) { 
      array_push($array,$item); 
     } 
    } 
    return $array; 
} 
関連する問題