web-dev-qa-db-ja.com

カート内の同じ製品クラスのアイテムの数をカウントするにはどうすればよいですか?

私はPHPの初心者ですが、これを行う方法がわかりません。

カート内の同じ商品クラスの商品の数量に応じて、各商品の価格を変更しようとしています。たとえば、商品クラスが「フルーツ」で、「アップル」、「オレンジ」、「バナナ」などの10個のアイテムがあるとします。そして、どの組み合わせでも、最初のアイテムを$ 10、2番目のアイテムを$ 0、3番目のアイテムを$ 0にします。だから私は C Custom Price を使ってこのコードを試しましたが、うまくいきません。

$firstPrice = 10;
$secondPrice = 0;
$thirdPrice = 0;

if ($item->qty = 1) {
  $item->price = $firstPrice;
}
elseif($item->qty = 2) {
  $item->price = $secondPrice;
}
elseif ($item->qty = 3) {
  $item->price = $thirdPrice;
}

明らかに$item->qtyは、単一のアイテム(同じノード)の数量です。では、カート内のこの製品クラス「フルーツ」のアイテムの数を使用して、これをどのように呼び出すことができますか? $item->priceは使用される最終価格です。

1
chinita7

$item->qtyの値を比較する代わりに、各制御ステートメントでそれらを設定しているため、コードが間違っています。 ===に置き換えます。

if ($item->qty == 1) {
  $item->price = $firstPrice;
}
elseif($item->qty == 2) {
  $item->price = $secondPrice;
}
elseif ($item->qty == 3) {
  $item->price = $thirdPrice;
}

代入ステートメントは、代入された値を値として持つ式でもあるため、作成したコードは機能します。

IFステートメントを作成する代わりに、SWITCHステートメントを使用できます。

switch ($item->qty) {
  case 1:
    $item->price = $firstPrice;
    break;

  case 2:
    $item->price = $secondPrice;
    break;

  case 3:
    $item->price = $thirdPrice;
    break;
}
0
kiamlaluno

@kiamlalunoのおかげで、私は自分の必要性のためにこのようになり、それは機能します。また this は役に立ちました

 // Load the current shopping cart.
      $items = uc_cart_get_contents($cid = NULL, $action = NULL);


    // Count the number of items
      $number_of_items = count($items);

    $firstPrice = 10;
    $secondPrice = 0;
    $thirdPrice = 0;

    switch ($number_of_items) {
      case 0:
        $item->price = $firstPrice;
        break;

      case 1:
        $item->price = $secondPrice;
        break;

     case 2:
        $item->price = $thirdPrice;
        break;
    }
0
chinita7