3

私は 2 次元配列を持っており、SESSION に入れる前に、以下のコード サンプルの最後の配列項目 (この場合は Array[3]) を常に削除/設定解除したいと考えています。
私はまだphpの初心者であり、次のことを試しましたが成功しませんでした。
どんな助けでも大歓迎です。

if (is_array$shoppingCartContents)) {  
   foreach($shoppingCartContents as $k=>$v) {
      if($v[1] === 999999) {
         unset($shoppingCartContents[$k]);
      }
   }
}


$shoppingCartContents = Array
(
[0] => Array
    (
        [productId] => 27
        [productTitle] => Saffron, Dill & Mustard Mayonnaise 
        [price] => 6.50
        [quantity] => 3
    )

[1] => Array
    (
        [productId] => 28
        [productTitle] => Wasabi Mayonnaise 
        [price] => 6.50
        [quantity] => 3
    )

[2] => Array
    (
        [productId] => 29
        [productTitle] => Chilli Mayo
        [price] => 6.50
        [quantity] => 2
    )

[3] => Array
    (
        [productId] => 999999
        [productTitle] => Postage
        [price] => 8.50
        [quantity] => 1
    )
)
4

2 に答える 2

3

使用するだけarray_pop()

$last_array_element = array_pop($shoppingCartContents);
// $shoppingCartContents now has last item removed

だからあなたのコードでは:

if (is_array($shoppingCartContents)) {  
    array_pop($shoppingCartContents); // you don't care about last items, so no need to keep it's value in memory
}
于 2013-01-10T01:29:15.803 に答える
0

数字ではなくキーに文字列を使用しているため、コードは失敗するため、比較

if($v[1] === 999999)

一致することはなく、チェックする必要があります$v['productId']

ユースケースでは、配列をループするのではなく、最後の項目をポップするだけです。

array_pop($shoppingCartContents);

array_popは、配列から最後の項目を削除します。最後のアイテムを返しますが、最後のアイテムを保持したくないため、戻り値は保存されません。

または、unsetを引き続き使用する場合は、最後のキーを取得し、それを使用してunsetを実行できます。

unset($shoppingCartContents[count($shoppingCartContents)-1])最後に、真のリスト(つまり、連続した数値インデックス)があるように見えるので、 ;のようなもので逃げることができます。

そうは言っても、array_popがその方法です。

于 2013-01-10T01:30:40.583 に答える