按值取消设置关联数组

时间:2012-09-20 19:05:17

标签: php

我想按值删除数组项。无法指定密钥。这是阵列。我按值对数组进行了排序,数字递减。

Array
(
    [this] => 15
    [that] => 10
    [other] => 9
    [random] => 8
    [keys] => 4
)

如果我想取消设置值小于10的所有项目。我该怎么做?

4 个答案:

答案 0 :(得分:4)

使用array_filter功能:

$a = array_filter($a, function($x) { return !($x < 10); });

答案 1 :(得分:0)

foreach($array as $key => $value)
  if( $value < 10 )
    unset($array[$key])

答案 2 :(得分:0)

假设所有值都是整数:

for (i=9;i>=0;i--)
{
    while (array_search($i, $assocArray) !== false)
    {
        unset($assocArray[array_search($i, $assocArray)]);
    }
}

可能有更优雅的方法可以做到这一点,但发烧对我的大脑有牢固的控制:)

knittl的答案是正确的,但如果您使用的是旧版本的PHP,则无法使用匿名函数,只需:

function filterFunc($v)
{
    return $v >= 10;
}
$yourArray = array_filter($yourArray,'filterFunc');

归功于Knittl

答案 3 :(得分:0)

$test = array(
    "this" => 15,
    "that" => 10,
    "other" => 9,
    "random" => 8,
    "keys" => 4
);

echo "pre: ";print_r($test);
pre: Array ( [this] => 15 [that] => 10 [other] => 9 [random] => 8 [keys] => 4 )

运行此代码:

foreach($test AS $key => $value) {
    if($value <= 10) {
        unset($test[$key]);
    }
}

结果是:

echo "post: ";print_r($test);
post: Array ( [this] => 15 )