我有一個數組刪除一個項目相匹配的鑰匙
$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');
我以這個爲每cmorrissy評論解決了這個只會有一個項目,這樣的變量是給我看貨,我要檢查是否
if($product[$id]['quantity']>1){ $product[$id]['quantity']--;}else{unset($product[$id]);}
,如果你的var_dump($陣列);這將是輸出
var_dump($array);
array(
f => foo
g => good
)
,因爲你與它會顯示爲一個相同的索引的數組,這就是爲什麼它會被刪除
你有一個語法錯誤,但除了這個你最後' f'會將你所有其他定義的'f'項目寫入你的數組中,因此不需要刪除其他項目。 – cmorrissey
你不能有多次相同的密鑰! – Rizier123
@ Rizier123 ...你可以,他們只是簡單地覆蓋海誓山盟 – cmorrissey