【问题标题】:Compare array values with same key in PHP在PHP中比较具有相同键的数组值
【发布时间】:2015-04-03 14:35:26
【问题描述】:

我正在尝试比较具有相同键的 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
}

感谢您的帮助。

【问题讨论】:

  • 如果具有相同键的值之一大于另一个值会发生什么?

标签: php arrays compare


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您可以嵌套 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;
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2015-01-04
      • 2022-11-29
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多