我有两个数组
$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';
}
}
通过此循环,它仅验证第一个值。我如何验证所有这些?
答案 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);
答案 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;
}
});