我有一个数组
$array = ['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good'];
我只想从这个数组中删除一个具有匹配键的项目,如下所示:
unset($array['f']);
但是,这将删除具有此匹配键“f”的所有项目,并且只保留一个项目。有没有办法做这样的事情,但只将它应用于数组中的第一个匹配项?
我有一个数组
$array = ['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good'];
我只想从这个数组中删除一个具有匹配键的项目,如下所示:
unset($array['f']);
但是,这将删除具有此匹配键“f”的所有项目,并且只保留一个项目。有没有办法做这样的事情,但只将它应用于数组中的第一个匹配项?
首先你有一个语法错误。
$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');
如果你 var_dump($array); 这将是输出
var_dump($array);
array(
f => foo
g => good
)
因为您有一个具有相同索引的数组,它将显示为一个,这就是为什么它将被删除
我已经根据cmorrissy评论使用这个解决了这个问题,只有一个项目,所以变量显示我的数量,我必须检查是否
if($product[$id]['quantity']>1){ $product[$id]['quantity']--;}else{unset($product[$id]);}