我有阵列:
$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
答案 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;
}