0

次の形式で多次元配列を作成しました

Array ( [0] => Array ( [id] => 10 [quantity] => 3 ) [1] => Array ( [id] => 9 [quantity] => 2 ) [2] => Array ( [id] => 12 [quantity] => 4 ) )

ID に基づいて特定の配列要素を設定解除しようとすると、設定解除後に以下のような配列が取得されます。

Array ( [0] => Array ( [id] => 10 [quantity] => 3 ) [2] => Array ( [id] => 12 [quantity] => 4 ) )

配列要素がアンセットされていますが、次の配列要素は削除された配列位置に移動しません。

配列要素の設定を解除するには、次のコードを使用しています。

$i = 0;
foreach($cartdetails["products"] as $key => $item){
    if ($item['id'] == $id) {
        $match = true;
        break;
    }
    $i++;
}
if($match == 'true'){
    unset($cartdetails['products'][$i]);
}

この問題を解決するには?それを解決するために親切に助けてください。

前もって感謝します。

4

4 に答える 4

0

これ使わないの???

$id = 9;
foreach($cartdetails["products"] as $key => $item){
   if ($item['id'] == $id) {
       unset($cartdetails['products'][$key]);
       break;
   }    
 }
于 2013-06-19T09:03:55.327 に答える
0

設定を解除する要素を見つけるために $i++ を使用するのはなぜですか?

foreach ループ内で要素の設定を解除できます。

foreach($cartdetails['products'] as $key => $item){
    if ($item['id'] == $id) {
        unset($cartdetails['products'][$key]);
        break;
    }
}
// in your case array_values will "reindex" your array
array_values($cartdetails['products']);
于 2013-06-19T09:04:59.600 に答える