2017-01-29 209 views
2

我有一個關於比較兩個數組的問題。 我已經在這個論壇中搜索,但沒有像我想要實現的。PHP - 比較兩個數組的值

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

我想達到的目標是,如果$stock每個值大於$request高,那麼我就可以執行該命令。 但是在這種情況下,位置2的請求值高於庫存值(6 vs 5)。

我的問題是,如果在$request中有任何值的PHP中的代碼如何比$stock中的每個值都高? 或 比較$stock中的每個值是否高於$request中的每個值?

Example of my database

預先感謝您。

+0

你在總匹配索引,或數組是什麼意思?在你的例子中'$ stock'會更高,因爲7高於3,6或3,還是因爲7,5和3分別對3,6和3評估? – Qirel

+0

在這種情況下,7(庫存)將與3(請求),5(庫存)和6(請求)進行比較,最後3(庫存)與最後3(請求)進行比較。 – Theo

+0

如果它們相等,它會有效嗎?他們**總是**長度相同,還是可以變化?如果它變化,那麼會發生什麼? – Qirel

回答

2

簡單地遍歷數組並比較各個數組中的索引。由於它是一個固定長度,因此不需要任何複雜的檢查或處理。這假定密鑰是由PHP分配的,所以他們都從0開始,由於此函數返回一個布爾值,真/假,簡單地使用在if語句來,像往常一樣由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 (validate_order($stock, $request)) { 
    /* Put your code here */ 
    /* The order is valid */ 
} else { 
    /* Order is not valid */ 
} 

Live demo

+0

以及如何/我在哪裏可以放回類似echo「some link」; 如果所有索引的庫存都高於請求(返回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; 
}