0

我在 foreach 循环中使用 in_array() 时遇到问题。不确定这是否可能,或者我是否在有更好方法的地方做一些荒谬的事情。我想要做的是浏览所有项目,如果它们的项目 id 与数组中的那个匹配,则返回 true 并将项目的价格添加到运行总数中。

$price = 0;
$result = false;
$array = array(1533, 2343, 2333);

foreach($order['items'] as $item){
  if(in_array($item['Item'], $array)){
     $result = true;
     $price += $item['Price'];
  }
}

**UPDATED**
Here is the order array

[items] => Array
    (
        [0] => Array
            (
                [Item] => 139957
                [OrderID] => 16025
                [SizeID] => 24
                [Price] => 46.00
            )

        [1] => Array
            (
                [Item] => 2343
                [OrderID] => 16025
                [SizeID] => 12
                [Price] => 32.00
            )
    )

[data] => Array
    (
    )
4

1 回答 1

3
$price = 0;
$result = false;
$array = array(1533, 2343, 2333);

foreach($order['items'] as $item){
  if(in_array($item['Item'], $array)){
     $result = true;
     $price += $item['Price'];
  }
}

if ($result)
{
    echo 'was true';
}
else
{
    echo 'was false';
}

从技术上讲,您甚至不需要 $result 变量,因为如果 $price 大于 0,那么它当然是正确的,除非项目的价格是免费的 ($0)。

于 2012-12-14T05:04:48.613 回答