代码之家  ›  专栏  ›  技术社区  ›  Richard Knop

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

php
  •  5
  • Richard Knop  · 技术社区  · 14 年前

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

    我有一个键=>值对:

    14=>1
    

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

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

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

    我想要一个单独的函数。

    5 回复  |  直到 9 年前
        1
  •  6
  •   alex    14 年前
    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;
    
    }
    
        2
  •  1
  •   Toto    14 年前
    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
  •  1
  •   mauris    14 年前

    听上去是家庭作业。

    function yourSpecialFunctionRenameMe(&$array, $key, $value){
        if(array_key_exists($array, $key) && $array[$key] == $value){
            $array[$key] = $value;
        }else{
            unset($array[$key]);
        }
    }
    
        4
  •  0
  •   Yeroon    14 年前
    function arr_add_rem($arr, $k, $v){
        if(!array_key_exists($k)){
            $arr[$k] = $v;
        }
        else{
            unset($arr[$k]);
        }
    
        return $arr;
    }
    

    像这样?

        5
  •  0
  •   Aung Myo Linn    9 年前
    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) 
    }