比较两个数组的值

时间:2014-03-04 17:04:48

标签: php arrays foreach

我有两个数组

$request_quantity   = ['0' => 15, '1' => 15];
$available_quantity = ['0' => 10, '1' => 10];

现在所有$request_quantity都超过$available_quantity

foreach($request_quantity as $request)
{
    foreach($available_quantity as $available )
    {
        if ( $request > $available ) 

        // return to page 'exceeded the maximum qty';
    }
}

通过此循环,它仅验证第一个值。我如何验证所有这些?

3 个答案:

答案 0 :(得分:1)

改为使用for循环:

if (($c = count($request_quantity)) !== count($available_quantity)) {
    echo 'Unequal number of elements';
}

for ($i=0; $i < $c; $i++) { 
    if ($request_quantity[$i] > $available_quantity[$i]) {
        echo 'Exceeded max qty', PHP_EOL;
    }
}

输出:

Exceeded max qty
Exceeded max qty

答案 1 :(得分:1)

如果你想循环比较两个数组元素,那么你可以通过一个循环来完成(两个数组的大小应该相同)。

创建一个结果数组,将$ request_quantity的每个元素的比较结果与每个元素的$ available_quantity存储起来。

你可以这样试试:

$request_quantity   = ['0' => 15, '1' => 10];
$available_quantity = ['0' => 10, '1' => 15];
$result = array();



for($i=0;$i<count($request_quantity);$i++)
    {
      $result[] = $request_quantity[$i] > $available_quantity[$i] ? 1:0;

    }
print_r($result);

live demo

答案 2 :(得分:0)

这是另一种选择:

$request_quantity   = array( 15, 15, 7, 5 );
$available_quantity = array( 10, 10, 12, 3 );
$is_item_available = array();

array_walk( $request_quantity, function ( $value, $key ) {

    global $request_quantity, $available_quantity, $is_item_available;

    if ( $request_quantity[$key] <= $available_quantity[$key] ) {
        $is_item_available[$key] = true;
    } else {
        $is_item_available[$key] = false;
    }

});