如何在数组中添加或删除(如果已存在)key =>值对?

时间:2010-11-24 12:30:10

标签: php

我想用一个函数来做这件事。

我有一个key =>值对:

14=>1

我有一个包含许多这样的对的数组:

array(15=>2, 16=>7, 4=>9)

我想要一个函数,它会将key =>值对添加到数组中,以防它已经存在但如果它已经存在则会从数组中删除它。

我想为此设置一个功能。

5 个答案:

答案 0 :(得分:6)

function updateArray($array, $findKey, $findValue) {

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

        if ($key == $findKey AND $value == $findValue) {
            unset($array[$key]);
            return $array;
        }
    }

    $array[$findKey] = $findValue;
    return $array;

}

答案 1 :(得分:1)

听我的作业。

function yourSpecialFunctionRenameMe(&$array, $key, $value){
    if(array_key_exists($array, $key) && $array[$key] == $value){
        $array[$key] = $value;
    }else{
        unset($array[$key]);
    }
}

答案 2 :(得分:1)

function add_or_remove(&$array, $key, $value) {

    // remove key/value pairs if they're both identical
    if (array_key_exists($key, $array)
      && $array[$key] == $value) {
        unset($array[$key]);

    // add new key/value pair
    // OR modify the value for existing key
    } else {
        $array[$key] = $value;
    }
}

答案 3 :(得分:0)

function arr_add_rem($arr, $k, $v){
    if(!array_key_exists($k)){
        $arr[$k] = $v;
    }
    else{
        unset($arr[$k]);
    }

    return $arr;
}

这样的东西?

答案 4 :(得分:0)

function add_or_remove_key_value_pair(&$array, $key, $value){
    if ($key == array_search($value, $array))
        unset($array[$key]);
    else
        $array[$key] = $value;
}

<强>测试

$array = array(15=>2, 16=>7, 4=>9);
add_or_remove_key_value_pair($array, 15, 2);// 15=>2 will be removed
add_or_remove_key_value_pair($array, 14, 1);// 14=>1 will be added
var_dump($array);

<强>输出:

array(3) { 
    [16]=> int(7) 
    [4]=> int(9) 
    [14]=> int(1) 
}