我有一个数组
$array = ['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good'];
我想从匹配的键中删除此数组中的一个项目,如下所示:
unset($array['f']);
但是,这将删除具有此匹配键'f'的所有项目,并且只保留一个项目。有没有办法做这样的事情,但只将它应用于数组中的第一个匹配项?
答案 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
)
因为你有一个具有相同索引的数组,它将显示为一个,这就是为什么它将被删除