-4

我有一个数组

$array = ['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good'];

我只想从这个数组中删除一个具有匹配键的项目,如下所示:

unset($array['f']);

但是,这将删除具有此匹配键“f”的所有项目,并且只保留一个项目。有没有办法做这样的事情,但只将它应用于数组中的第一个匹配项?

4

3 回答 3

1

首先你有一个语法错误。

$array=$array(['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good']);

你有一个额外的 $ 和 [] 额外的,并且你不能有很多具有相同键的记录(因为最后一个将覆盖以前的)......定义的正确方法

$array= array('f'=> array('foo', 'foo2', 'foo3'), 'g'=>'good');

这些值将是 de F 键内的一个新数组。然后你只能删除一条记录

unset($array['f'][0]);

现在你的数组 var_dump:

$array= array('f'=> array('foo2', 'foo3'), 'g'=>'good');
于 2016-10-11T20:15:27.293 回答
0

如果你 var_dump($array); 这将是输出

var_dump($array);
array(
    f => foo
    g => good
 )

因为您有一个具有相同索引的数组,它将显示为一个,这就是为什么它将被删除

于 2016-10-12T00:03:09.940 回答
0

我已经根据cmorrissy评论使用这个解决了这个问题,只有一个项目,所以变量显示我的数量,我必须检查是否

if($product[$id]['quantity']>1){ $product[$id]['quantity']--;}else{unset($product[$id]);}

于 2016-10-11T21:10:45.407 回答