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 的元素不会被取消设置。这个脚本有什么问题?

4

2 回答 2

2

我自己找到了答案(在这篇文章的帮助下)

它适用于以下内容:

$allowedViewLevels=array_diff($allowedViewLevels, array(1,8,11));
$niveis=implode(",", $allowedViewLevels);
print $niveis; 
于 2013-08-24T14:01:35.703 回答
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;

但是,正如您自己已经找到答案一样,赞!

于 2013-08-24T14:01:47.310 回答