我有一个二维数组,希望在我把它放入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
)
)
答案 0 :(得分: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
}
答案 1 :(得分:0)
您的代码将失败,因为您使用字符串作为键,而不是数字,因此比较
if($v[1] === 999999)
永远不会匹配,应该检查$v['productId']
。
对于您的用例,您可以只关闭最后一项:
,而不是循环遍历数组array_pop($shoppingCartContents);
array_pop从数组中删除最后一项。它返回最后一项,但由于您不想保留最后一项,我们不会保存返回值。
或者,如果您仍想使用未设置,则可以get the last key,然后使用该设置取消设置。
最后,因为看起来你有一个真正的列表(即连续的数字索引),你可以逃脱unset($shoppingCartContents[count($shoppingCartContents)-1])
;
所有这一切,array_pop是要走的路。