2016-10-11 19 views
-4

我有一個數組刪除一個項目相匹配的鑰匙

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

,我想從這個數組只刪除一個項目相匹配的鍵,如下所示:

unset($array['f']); 

然而,這將刪除具有該匹配關鍵字'f'的所有項目,並且只剩下一個項目。有沒有辦法做這樣的事情,但只適用於數組中的第一個匹配項目?

+0

你有一個語法錯誤,但除了這個你最後' f'會將你所有其他定義的'f'項目寫入你的數組中,因此不需要刪除其他項目。 – cmorrissey

+1

你不能有多次相同的密鑰! – Rizier123

+0

@ Rizier123 ...你可以,他們只是簡單地覆蓋海誓山盟 – cmorrissey

回答

1

首先你有一個語法錯誤。

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

感謝您的幫助, 當我使用這個'unset($ array ['f'])'這是刪除與該鍵匹配的元素, ,但現在($ array ['f'] [0])' – Feci

+0

現在帶有'unset($ array ['f'] [0])'這不會刪除數組中的任何元素 – Feci

+0

沒問題@feci,如果你想從F中刪除其他元素,你必須改變數字... [0]例如:$ array ['f'] [1] – jaloise

0

我以這個爲每cmorrissy評論解決了這個只會有一個項目,這樣的變量是給我看貨,我要檢查是否

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

0

,如果你的var_dump($陣列);這將是輸出

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

,因爲你與它會顯示爲一個相同的索引的數組,這就是爲什麼它會被刪除

相關問題