php获取数组元素并立即从数组中删除它

时间:2014-07-18 09:47:39

标签: php arrays

我有阵列:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

是否有内置的php函数,它通过键获取数组值,然后从该数组中删除元素?

我知道array_shift和array_pop函数,但我需要通过自定义键获取元素,而不是第一个/最后一个元素。类似的东西:

$arr; // 'a'=>1, 'b'=>2, 'c'=>3
$elem = array_shift_key($arr, 'b');
echo $elem; // 2
$arr; // 'a'=>1, 'c'=>3

3 个答案:

答案 0 :(得分:3)

不确定原生方式,但这应该有效:

function shiftByKey($key, &$array) {
    if (!array_key_exists($key, $array)) {
        return false;
    }

    $tmp = $array[$key];
    unset($array[$key]);

    return $tmp;
}

编辑:更新它以便通过引用传递数组。否则你的阵列保持不变。

答案 1 :(得分:2)

据我所知,没有什么能接近这一点。虽然可以写得很容易:

function array_shift_key(array &$array, $key) {
    $value = $array[$key];
    unset($array[$key]);
    return $value;
}

如果您关心,首先验证数组中是否存在密钥,并根据您的错误处理原则执行某些操作(如果它没有)。否则,您只需获得不存在密钥的标准PHP通知。

答案 2 :(得分:0)

function array_shift_key(array &$input, $key) {
    $value = null;

    // Probably key presents with null value
    if (isset($input[$key]) || array_key_exists($key, $input)) {
        $value = $input[$key];
        unset($input[$key]);
    }

    return $value;
}