从匹配键的数组中删除一个项目

时间:2016-10-11 20:06:09

标签: php arrays rowdeleting

我有一个数组

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

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

unset($array['f']);

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

3 个答案:

答案 0 :(得分:1)

首先,您遇到语法错误。

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

你有一个$ extra和[]额外的东西,你不能用相同的密钥记录很多记录(因为最后一个会覆盖以前的记录)...正确的定义方法

$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');

答案 1 :(得分:0)

我已经通过使用 cmorrissy 注释解决了这个问题,只有一个项目,因此变量显示我数量,我必须检查是否

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

答案 2 :(得分:0)

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

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

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