2017-01-29 6 views
2

Ich habe eine Frage zum Vergleich zweier Arrays. Ich suche schon in diesem Forum aber nichts vergleichbares was ich erreichen möchte.PHP - Vergleichen Sie 2 Werte von Arrays

$stock = array("7", "5", "3"); 
$request = array("3", "6", "3"); 

Was ich erreichen möchte ist, wenn jeder Wert in $stock höher als $request ist, dann kann ich den Auftrag auszuführen. In diesem Fall ist der Anforderungswert in Position 2 jedoch höher als der Bestandswert (6 vs 5).

Meine Frage ist, wie ist der Code in PHP zu vergleichen, wenn es einen Wert in $request ist höher als jeder Wert in $stock? OR zu vergleichen, wenn jeder Wert in $stock höher ist als jeder Wert in $request?

Example of my database

Vielen Dank im Voraus.

+0

Meinten Sie durch Indizes oder Array insgesamt passend? Wäre '$ stock' in deinem Beispiel höher, weil 7 höher als 3, 6, 3 ist, oder wäre es, weil 7, 5 und 3 einzeln gegen 3, 6 und 3 bewertet werden? – Qirel

+0

In diesem Fall wird 7 (Bestand) mit 3 (Anfrage), 5 (Bestand) mit 6 (Anfrage) und die letzten 3 (Bestand) mit den letzten 3 (Anfrage) verglichen. – Theo

+0

Und wäre es gültig, wenn sie gleich sind? Und haben sie ** immer ** die gleiche Länge, oder kann es variieren? Wenn es variiert, was sollte dann passieren? – Qirel

Antwort

2

Einfach Schleife durch die Arrays und vergleichen Sie die Indizes in den jeweiligen Arrays. Da es sich um eine feste Länge handelt, sind keine komplexen Prüfungen oder Handlings erforderlich. Dies setzt voraus, dass die Schlüssel von PHP zugeordnet sind, so dass sie alle beginnen bei 0 und erhöhen immer von 1.

$stock = array("7", "5", "3"); 
$request = array("3", "6", "3"); 
var_dump(validate_order($stock, $request)); // false 

$stock = array("7", "5", "3"); 
$request = array("3", "4", "3"); 
var_dump(validate_order($stock, $request)); // true 

function validate_order($stock, $request) { 
    foreach ($stock as $key=>$value) // Fixed length, loop through 
     if ($value < $request[$key]) 
      return false; // Return false only if the stock is less than the request 
    return true; // If all indexes are higher in stock than request, return true 
} 

Da diese Funktion eine boolean zurückgibt, wahr/falsch, einfach, dass die Verwendung in einem if -Anweisung, wie diese

if (validate_order($stock, $request)) { 
    /* Put your code here */ 
    /* The order is valid */ 
} else { 
    /* Order is not valid */ 
} 

Live demo

+0

Und wie/wo kann ich etwas wie echo setzen" some link "; wenn alle Indizes höher als die Anfrage sind (Rückgabe wahr)? – Theo

+0

Siehe meine Bearbeitung :-) @ user3063040 – Qirel

+1

Vielen Dank. Es funktioniert wie ich es erwartet habe. – Theo

1
function checkOrder($stock,$request){ 
    for($i=0; $i < count($stock); $i++){ 
     if($stock[$i] < $request[$i]) return false; 
    } 
    return true; 
} 
Verwandte Themen