2013-08-24 118 views
1

我有陣列$allowedViewLevels用下面的例子元素:取消設置值

Array (
    [0] => 1 
    [1] => 1 
    [2] => 2 
    [3] => 3 
    [4] => 4 
    [5] => 6 
    [6] => 7 
    [7] => 8 
    [8] => 9 
    [9] => 10 
    [10] => 11 
    [11] => 12 
) 

欲環槽此陣列,並檢查值等於1,8或11。如果是這樣,相應的元素應該從數組中刪除。

爲此,我使用下面的腳本:

foreach ($allowedViewLevels as $key) { 
    if($key==1 || $key==8 || $key==11){ 
     unset($allowedViewLevels[$key]); 
    } 
}; 

$niveis=implode(",", $allowedViewLevels); 
print $niveis; 

這是返回:

1,2,3,4,6,7,8,10,11 

所以包含值1,8或11中的陣列中的元件沒有被從取消設置它。這個腳本有什麼錯誤?

+0

你說你想測試的值,但代碼測試的關鍵。你真的想測試哪個? – 2013-08-24 13:58:51

回答

2

,我發現自己的答案(與this post)

它適用於以下幫助:

$allowedViewLevels=array_diff($allowedViewLevels, array(1,8,11)); 
$niveis=implode(",", $allowedViewLevels); 
print $niveis; 
1

數組包含對[key] => value

在你foreach循環,你應該參照它:

foreach ($allowedViewLevels as $key=>$value) { 
    if ($value == 1 || $value == 8 || $value == 11) { 
     unset($allowedViewLevels[$key]); 
    } 
} // Also: no semicolon here... 

$niveis = implode(",", $allowedViewLevels); 
echo $niveis; 

但是,正如你已經找到了自己的答案,讚揚!