2011-07-13 156 views
2

取下PHP數組項目我有一個PHP數組這樣通過傳遞價值

Array 
(
    [0] => WVSE1P 
    [1] => WVSE1MA 
    [2] => WVSEU1Y 
    [3] => WVSEUP 
) 

我如何通過傳遞值去除它的特定條目?

下面

是我試過的代碼:

$array = $items; //array is items 

foreach($array as $key => $value) 
{ 

$val= 'WVSE1P'; //item to remove 
if ($value == $val) unset($array[$key]); 

} 

,但它似乎並沒有工作。

回答

7

您應該使用array_splice而不是取消設置,以便您的數組索引在未設置後正確匹配。

這個怎麼樣?:

$val = 'WVSE1P'; 
$items = array_splice($items, array_search($val), 1); 
+0

@Hans:感謝您的鏈接。 – Jordan

1

取消設置陣列項目在遍歷數組可能會導致一些意外行爲的一些倍。這是另一種解決方案:

$flipped = array_flip($array); 
unset($flipped['WVSE1P']); 
$array = array_flip($flipped); 

這應該在這種情況下工作。只要確保所有值在數組內都是唯一的。

3

此方法刪除指定的數組中的任何值,而不會任何循環:實施例:

$array = Array("blue", "orange", "red"); 

$array = array_diff($array, array("blue")); // blue will be removed 

//optionally you can realign the elements: 

$array = array_values($array); 

你可能不工作的原因是因爲你含有它的環,其不控制陣列對象的內部。

+0

如果他在最後做了array_values(),他將失去他陣列中的密鑰。 – Jordan

+0

它所做的只是將數組的值返回並按順序將它們編入索引 – 1337XyPhR

+0

正確,但是如果他需要保留密鑰呢?看來'$ array = array_merge($ array)'會更好。 – Jordan