PHP:如果密钥已经存在,则附加到值,如果不添加密钥

Gra*_*ton 12 php arrays

我在PHP中寻找一种简洁的方法:

给定一个数组,如果我key=>value向它添加一对,例程应检查该键是否已存在.

如果它不存在,请使用该key=>value对添加到数组.

如果是,则该值应附加到数组的值.因此,例如,如果初始数组是这样的话

arr['a']='2e'
Run Code Online (Sandbox Code Playgroud)

当我'a'=>'45'向数组添加一对时,例程将返回给我

arr['a']=array('2e', '45')
Run Code Online (Sandbox Code Playgroud)

当我添加另一'a=>gt'对时,例程将返回给我

arr['a']=array('2e', '45','gt')
Run Code Online (Sandbox Code Playgroud)

这样做有简洁的方法吗?当然我可以自己写,但我相信我的解决方案非常难看.

Flo*_*anH 20

您可以通过使用第一个元素("2e")的数组来解决问题:

$arr = array();

$arr['a'][] = '2e';
$arr['a'][] = '45';
$arr['a'][] = 'gt';

print_r($arr);
Run Code Online (Sandbox Code Playgroud)


Vot*_*ple 12

有三种情况:

  1. 关键是未定义的
  2. 密钥已定义,但尚未设置为数组
  3. 键已定义,元素是数组.

所以,在代码中:

function appendThings(/* map[string,mixed] */ $array, /* string */ $key, /* string */ $value) {
    if (!isset($array[$key]))
        $array[$key] = $value;
    else if (is_array($array[$key]))
        $array[$key][] = $value;
    else
        $array[$key] = array($array[$key], $value);

    return $array;
}
Run Code Online (Sandbox Code Playgroud)

这只是最后一个棘手的案例:如果它还不是一个数组,你需要使用当前值和新值组合一个.