php优雅键未设置

Ale*_*tau 8 php arrays array-unset

我需要从数组中删除一些键.

$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');
unset($array['a']);
unset($array['b']);
Run Code Online (Sandbox Code Playgroud)

我怎么能更优雅呢?也许有这样的功能array_keys_unset('a', 'b')
我不需要array_valuesforeach.我只想知道是否有可能.
先感谢您.抱歉,我的英语和孩子般的问题.

cod*_*ict 15

您可以通过单次调用来执行此操作unset:

unset($array['a'],$array['b']);
Run Code Online (Sandbox Code Playgroud)

  • 我在这里写一个函数.+1 (3认同)

Bol*_*ock 5

unset() 就像它得到的一样简单,但作为另一种解决方案怎么样?

$keys_to_remove = array_flip(array('a', 'b'));
$array = array_diff_key($array, $keys_to_remove);
Run Code Online (Sandbox Code Playgroud)

投入功能:

function array_unset_keys(array $input, $keys) {
    if (!is_array($keys))
        $keys = array($keys => 0);
    else
        $keys = array_flip($keys);

    return array_diff_key($input, $keys);
}

$array = array_unset_keys($array, array('a', 'b'));
Run Code Online (Sandbox Code Playgroud)

或者您甚至可以unset()通过传递可变数量的参数来实现它,如下所示:

function array_unset_keys(array $input) {
    if (func_num_args() == 1)
        return $input;

    $keys = array_flip(array_slice(func_get_args(), 1));

    return array_diff_key($input, $keys);
}

$array = array_unset_keys($array, 'a', 'b');
Run Code Online (Sandbox Code Playgroud)