是否有内置方法来检索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]
*/
答案 0 :(得分:2)
没有一种内置方式的功能。当我推翻它时, Aammad Ullah 正确地对待它,但这是一个简单的方法。 $result
将包含'bar' => 456
,它将从$array
中删除:
$array = array_diff_key($array, $result = ['bar' => $array['bar']]);
'bar' => $array['bar']
数组分配给$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));
答案 1 :(得分:2)
$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');