0

foreach ループ内で in_array() を使用すると問題が発生します。これが可能かどうか、またはもっと良い方法があるところでばかげたことをしているのかどうかはわかりません。私がやりたいことは、すべてのアイテムを調べて、それらのアイテム ID が配列内の 1 つと一致する場合、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 に答える