У меня есть массив
$array = ['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good'];
и я хочу удалить только один элемент из этого массива с соответствующим ключом, как показано ниже:
unset($array['f']);
Однако при этом будут удалены все элементы с соответствующим ключом ‘f’, и останется только один элемент. Есть ли способ сделать что-то подобное, но применить его только к первому соответствующему элементу в массиве?
Прежде всего, у вас есть синтаксическая ошибка.
$array=$array(['f'=>'foo', 'f'=>'foo', 'f'=>'foo','g'=>'good']);
У вас есть $ extra и [] extras, и вы не можете иметь много записей с одним и тем же ключом (потому что последний переопределит предыдущий) … Правильный способ определения
$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');
я решил это, используя это согласно cmorrissy комментарий будет только один элемент, так что переменная показала мне кол-во, я должен проверить, если
if($product[$id]['quantity']>1){ $product[$id]['quantity']--;}else{unset($product[$id]);}
если вы var_dump ($ массив); это будет выходной
var_dump($array);
array(
f => foo
g => good
)
так как у вас есть массив с тем же индексом, он будет отображаться как один, и поэтому он будет удален