2016-10-20 5 views
-2

Es ist eine einfache Frage, aber mir rätselhaft:Wie suche ich, wenn ein Wert innerhalb eines mehrdimensionalen Arrays in PHP in einem Bereich liegt?

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

Wie kann ich überprüfen, ob $x gegeben, dazwischen liegt, in jedem dieser speziellen individuellen Array-Werte? Ich möchte jedes einzelne Eintragsfeld durchsuchen.

Zum Beispiel möchte ich suchen, wenn $x irgendwo zwischen ist: 10-20 und dann zwischen 299 zu 315 und dann zwischen 156-199.

+2

Mögliches Duplikat von [in \ _array() und multidimensionalem Array] (http://StackOverflow.com/questions/4128323/in-array-and-multidimensional-array) –

+0

Ja, könnte sein, dass diese Frage 155 UPVOTES hat Aber es wurde nicht so gefragt. Recht ?? –

+0

Aber, plz Kopf meine Frage - liegt dazwischen. NOt 'enthält'. –

Antwort

1

Try this:

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 

Die Funktion is_in_array_range() zwei Argumente nehmen. Das Array und der Wert, den Sie überprüfen möchten, liegen im Bereich.

Wenn es eintritt, wird es über alle Elemente im Array laufen. Jedes Mal, wenn es den höchsten und niedrigsten Wert des verschachtelten Arrays (min() und max() Funktion) erhält, und prüft, ob der Wert, den Sie suchen, zwischen ihnen ist. Wenn dies der Fall ist, true zurück (dies stoppt auch die Funktion). Wenn true nie erreicht wird, wird der Wert nicht gefunden, und am Ende der Funktion wird false zurückgegeben.

+1

Guter Ansatz, ich hatte etwas ähnliches auftauchen aber nicht viel, das gleiche zweimal zu posten. Ich habe nicht darüber nachgedacht, für die Werte Min und Max zu verwenden. Außerdem wäre die Antwort für das OP mit einer Klarstellung darüber, was genau Sie getan haben, vollständig. – Rimble

+0

@Rimble Guter Anruf. – Ivar

+0

@ivar Super Ansatz. Kann jemand meine Frage bitte auffrischen :) –

0

das es Code tun

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

Hallo, M nicht auf der Suche nach 10 & 20, aber Suche, wenn $ x ist 10,11,12 ... 19,20 –

Verwandte Themen