-2

私は非正統的な方法でアイテム情報を構造化しました。それは 3 つの異なる配列に格納され、キーによって関連付けられています。ItemID で数量を合計しようとしています。

   1. Array #1 ItemID
        $_SESSION["item_id"][] 
             1 => 1, 2 => 1, 3 =>2
   2. Array #2 Size 
        $_SESSION["size"][]   
             1 => S, 2 => L, 3 =>S
   3. Array #3 Quantity 
        $_SESSION["count"][]
             1 => 250, 2 =>750, 3=>250

結果は次のようになります。

ItemID # 1 --> 数量 1000

ItemID # 2 --> 数量 250

誰かが関数で私を助けることができますか?

4

1 に答える 1

0

に次の配列があるとします$_SESSION

$_SESSION['item_id'] = array(1, 1, 2);
$_SESSION['size'] = array('S', 'L', 'S');
$_SESSION['count'] = array(250, 750, 250);

注: 次の回答では、これら 3 つの SESSION 値の配列の長さが等しいと仮定しています。

結果を保存するには、新しい配列を作成する必要があります。

$newArrayResult = array();

その後、for...each現在アクセスされているキーを抽出するためにループを実行する必要があります。

foreach($_SESSION['item_id'] as $key => $value){
    //the logic goes here
}

次に、$newArrayResult の配列キーとして item_id を使用します。そのためには、すでに定義されているかどうかを最初に確認する必要があります。そうでない場合は、デフォルト値でキーを作成します0。と呼ばれる組み込み関数を使用してチェックを行いますarray_key_exists。このようにして、未定義のキー インデックス エラーが発生するのを回避します。

if(!array_key_exists($value, $newArrayResult)){
    $newArrayResult[$value] = 0;
}

$newArrayResult のキーを取得したら、次のステップは単純にカウント値をそこに格納することです。

$newArrayResult[$value] += $_SESSION['count'][$key];

終わり。結果を印刷してテストします。

print_r($newArrayResult);

ここにコード全体をもう一度示します。コピーして貼り付けてください。最初に上記の流れを読んで理解することを忘れないでください。

$_SESSION['item_id'] = array(1, 1, 2);
$_SESSION['size'] = array('S', 'L', 'S');
$_SESSION['count'] = array(250, 750, 250);

$newArrayResult = array();
foreach($_SESSION['item_id'] as $key => $value){
    if(!array_key_exists($value, $newArrayResult)){
        $newArrayResult[$value] = 0;
    }
    $newArrayResult[$value] += $_SESSION['count'][$key];
}

print_r($newArrayResult);
于 2012-12-19T03:22:55.330 に答える