从数组PHP中删除元素

时间:2017-01-24 18:44:35

标签: php arrays

我有一个数组,中间部分根据数量产品而变化

Array ( [name] => Alberto [email] => email@hotmail.com [code_1] => tshirt [description_1] => Tshirt color red [price_1] => 453.0 [quantity_1] => 1 [subtotal_1] => 453.0 [code_2] => sweater [description_2] => Sweater with long sleeves [price_2] => 23.43 [quantity_2] => 2 [subtotal_2] => 46.86 [employee] => 1 [total] => 499.86 )

我想删除前2个元素和最后2个元素,只需保留

Array ( [code_1] => tshirt [description_1] => Tshirt color red [price_1] => 453.0 [quantity_1] => 1 [subtotal_1] => 453.0 [code_2] => sweater [description_2] => Sweater with long sleeves [price_2] => 23.43 [quantity_2] => 2 [subtotal_2] => 46.86 )

我尝试

array_splice($_POST, 2, -2);

但这只是保留前2和后2,我需要它们之间的元素。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

使用array_slice()从第3项(偏移2)到结尾减去最后2项的切片:

$result = array_slice($_POST, 2, -2);

注意:如果你的阵列显然是4件或更少,你将得不到任何东西。

要使用array_splice()执行此操作,请删除前2个,然后删除最后2个:

array_splice($_POST, 0, 2);
array_splice($_POST, -2);

由于这是一个关联数组,因此无论顺序如何,最好只获取所需的键:

$wanted = array('price_1', 'quantity_1'); // etc...
$result = array_intersect_key($_POST, array_flip($wanted));

答案 1 :(得分:0)

由于您的数据结构是哈希映射,因此您不应删除带有数字索引(键位置)的元素。

这是一个哈希映射,你不能只在键上继续索引(键位置),继电器。

使用unset指令从数组中删除任何元素(哈希映射)。

unset($arr['name'], $arr('email'));