在foreach循环中取消设置数组元素

时间:2010-05-17 20:05:16

标签: php

所以这是我的代码:

<?php

$arr = array(array(2 => 5),
             array(3 => 4),
             array(7 => 10));

foreach ($arr as $v) {
    $k = key($v);
    if ($k > 5) {
        // unset this element from $arr array
    }
}

print_r($arr);

// now I would like to get the array without array(7 => 10) member

如您所见,我从一个单键数组开始=&gt;值数组,我循环遍历此数组并获取当前元素的键(这是一个单项数组)。

我需要使用高于5的键取消数组元素,我该怎么做?我可能还需要删除值小于50的元素或任何其他条件。基本上我需要能够获得当前数组项的键,它本身就是一个包含单个项的数组。

5 个答案:

答案 0 :(得分:44)

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

答案 1 :(得分:14)

PHP 安全的,可以在使用foreach循环迭代数组时从数组中删除元素:

foreach ($arr as $key => $value) {
    if (key($value) > 5) {
        unset($arr[$key]);
    }
}

答案 2 :(得分:2)

使用key()从子阵列中获取第一个键。

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

答案 3 :(得分:0)

在迭代过程中添加或删除集合并不是很安全。如何将你想要的元素添加到第二个数组,然后转储原始文件?

答案 4 :(得分:0)

要取消设置数组元素,我们使用unset()和php函数,如下所示:

foreach($array as $key=>$value)
{
   if(key($value) > 5) 
   {
      unset($array[$key]);
   }
}