是否有一种内置的方式来检索PHP数组元素,使其从数组中删除?类似于array_pop()
,但在一个特定的指数上?例如:
<?php
$array = [
'foo' => 123,
'bar' => 456,
'baz' => 789
];
$bar = array_get_and_remove($array, 'bar');
/* Outputs:
* $bar = 456,
* $array = ['foo' => 123, 'baz' => 789]
*/
$element = $array[$key];
unset($array[$key]);
因此,要使您的函数(一定要使用参考&
):
function array_get_and_remove(&$array, $key);
$element = $array[$key];
unset($array[$key]);
return $element;
}
:
$bar = array_get_and_remove($array, 'bar');
没有一个内置的方法。 mohammad Ullah在我想太多的时候直接说了,但这里有一个简单的方法。$result
将包含'bar' => 456
,并将其从$array
中移除:
$array = array_diff_key($array, $result = ['bar' => $array['bar']]);
- 将
'bar' => $array['bar']
array赋给$result
- 计算数组与
$result
的差值
使用array_splice()
:
$result = array_splice($array, array_search('bar', array_keys($array), true), 1);
- 获取字符串键
array_keys()
的数组 - 搜索
bar
数组返回数字键/偏移array_search()
- 使用
1
的偏移量和长度来删除该元素并返回array_splice()
要获取值,使用current()
:
$result = current(array_splice($array, array_search('bar', array_keys($array), true), 1));