如何在PHP中删除二维数组中的最后一个元素?

3

我有一个二维数组,希望在将其放入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
    )
)

你的代码可能有一个拼写错误:is_array$shoppingCartContents) - Jim
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
}

0

你的代码会失败,因为你使用字符串作为键而不是数字,所以比较

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

永远不会匹配,应该检查$v['productId']

对于你的用例,你可以直接弹出最后一个项目,而不是循环遍历数组:

array_pop($shoppingCartContents);

array_pop 从数组中移除最后一个项目。它返回该项目,但由于您不想保留最后一个项目,因此我们不保存返回值。

或者,如果您仍然想使用unset,可以获取最后一个键,然后使用该键进行unset。

最后,由于看起来您拥有真正的列表(即连续的数字索引),因此您可以使用类似于unset($shoppingCartContents[count($shoppingCartContents)-1])的东西。

尽管如此,array_pop是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接