2017-01-29 4 views
2

У меня есть вопрос относительно сравнения двух массивов. Я уже ищу в этом форуме, но ничего подобного не хочу.PHP - Сравнить 2 значения массивов

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

То, что я хочу достигнуть, если каждое значение в $stock выше $request, то я могу выполнить заказ. Но в этом случае значение запроса в позиции 2 превышает значение запаса (6 против 5).

Мой вопрос в том, как сравнить код в PHP, если есть какое-либо значение в $request, чем любое значение в $stock? OR для сравнения, если каждое значение в $stock превышает любое значение в $request?

Example of my database

Спасибо заранее.

+0

ли вы имеете в виду путем сопоставления индексов или массив в общей сложности? Будет ли '$ акции' выше в вашем примере, потому что 7 выше 3, 6, 3, или это будет потому, что 7, 5 и 3 оцениваются отдельно от 3, 6 и 3? – Qirel

+0

В этом случае 7 (запас) будет сравниваться с 3 (запрос), 5 (запас) с 6 (запрос) и последними 3 (запасами) с последними 3 (запрос). – Theo

+0

И это было бы справедливо, если бы они были равны? И они ** всегда ** одинаковой длины или могут ли они меняться? Если это будет изменяться, что тогда должно произойти? – Qirel

ответ

2

Просто пройдите по массивам и сравните индексы в соответствующих массивах. Поскольку это фиксированная длина, всегда, нет необходимости в каких-либо сложных проверках или обработках. При этом предполагается, что ключи назначаются PHP, так что все они начинаются с 0 и всегда возрастает на 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 
} 

Поскольку эта функция возвращает логическое значение, истина/ложь, просто использовать, что в if -statement, как это

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

Live demo

+0

И как/где я могу поместить что-то вроде echo« some link »; , если все индексы выше на складе, чем запрос (return true)? – Theo

+0

См. Мое редактирование :-) @ user3063040 – Qirel

+1

Спасибо. Он работает так, как я ожидал. – Theo

1
function checkOrder($stock,$request){ 
    for($i=0; $i < count($stock); $i++){ 
     if($stock[$i] < $request[$i]) return false; 
    } 
    return true; 
} 
Смежные вопросы