2016-10-20 6 views
-2

それは簡単な質問ですが、私に不可解:値がPHPの多次元配列の範囲内にあるかどうかを検索するにはどうすればよいですか?

$myarray = array(
    array(10,20), 
    array(299, 315), 
    array(156, 199) 
); 

$x与えられた場合、私がチェックするにはどうすればよい、それらの特定の個々の配列の値のいずれかで、間にありますか?個々のエントリ配列を検索したい例については

$xの間のどこかにある場合、私は、検索したい:20にして、299315から10、その後199から156間。

+2

[in \ _array()および多次元配列]の可能な複製(http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array) –

+0

はい、その質問には155の可能性がありますしかし、これは尋ねられていませんでした。右 ?? –

+0

しかし、plzは私の質問を心に留めます。 NOt 'contains'。 –

答えて

1

このお試しください:機能is_in_array_range()

function is_in_array_range($array, $search) { 
    foreach ($array as $value) { 
     $min = min($value); 
     $max = max($value); 

     if ($search >= $min && $search <= $max) { 
      return true; 
     } 
    } 

    return false; 
} 

$myarray = array(
    array(10,20), 
    array(299, 315), 
    array(156, 199) 
); 

is_in_array_range($myarray, 9); // Returns false 
is_in_array_range($myarray, 11); // Returns true 

は2つの引数を取ります。配列とチェックしたい値が範囲内にあります。

入力すると、配列内のすべての要素がループします。ネストされた配列(min()max()関数)の最高値と最低値を取得するたびに、探している値がそれらの間にあるかどうかをチェックします。この場合、trueを返します(これによっても機能は停止します)。 trueに達していない場合は、値が見つからないため、関数の最後にfalseを返します。

+1

良いアプローチ、同じことを2回投稿することはあまり役に立ちません。値にminとmaxを使うことについて考えなかった。また、答えは、あなたが正確に何をしたかについてのいくつかの明確化を伴って、OPのために完全であろう。 – Rimble

+0

@Rimbleよろしくお願いします。 – Ivar

+0

@ivar素晴らしいアプローチ。誰かが私の質問をupvoteすることができます:) –

0

これはそれを行うだろうコード

foreach($myarray as $value) 
{ 
if(in_array("10", $value, true)) 
{ 
    echo "Got 10"; 
} 
} 
+0

こんにちは、10と20を検索していませんが、$ xが10,11,12 ... 19,20 –

関連する問題