在PHP中使用相同的键比较数组值

时间:2015-04-03 14:35:26

标签: php arrays compare

我试图将2个数组的值与相同的键进行比较,看看具有相同键的数组的值是否大于另一个。这是阵列:

Array
(
    [3203] => 2
    [7276] => 1
)
Array
(
    [3203] => 1
    [7276] => 1
)

生成上面数组的代码部分:

foreach ($this->request->post['quantity'] as $key => $value)
{           
    $cart_value[$key] = $value;
}

foreach ($this->session->data['cart'] as $id => $val) {

$stock[$id] = $this->cart->availableStock($id);
}

如何比较每个键的值?

我有这个if else声明:

if ($cart_value > $stock) {
  // do something<br>
} elseif ($cart_value = $stock) {
  // do another thing
} else {
  // do this thing
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在数组上使用array_intersect_assoc,然后使用count查看结果是否相同。

或者,使用array_diff_assoc并查看结果是否为空。

所有取决于你想要对结果做什么。第一个选项将返回一个包含匹配元素的数组,第二个选项将返回一个包含不匹配元素的数组。

如果您希望结果基于特定公式(例如,仅返回第二个数组中值较大的项目),则可以使用array_uintersect_assoc

答案 1 :(得分:0)

你可以嵌套foreach循环。

foreach ($array1 as $k1 => $v1) {
    foreach {$array2 as $k2 => $v2) {
        if ($k1 === $k2) {
            switch (true) {

               case ($v1 < $v2):
                   // less than
                   break;
               case ($v1 > $v2):
                   // more than
                   break;
               case ($v1 == $v2):
                   // equal
                   break;
               default:
                   // values cannot be compared
                   break;
            }
        }
    }
}