是否有一种内置的方法来检索PHP数组元素,从而将其从数组中删除?
是否有一种内置的方法来检索PHP数组元素,从而将其从数组中删除?类似于,但在特定索引上?例如:是否有一种内置的方法来检索PHP数组元素,从而将其从数组中删除?,php,arrays,Php,Arrays,是否有一种内置的方法来检索PHP数组元素,从而将其从数组中删除?类似于,但在特定索引上?例如: <?php $array = [ 'foo' => 123, 'bar' => 456, 'baz' => 789 ]; $bar = array_get_and_remove($array, 'bar'); /* Outputs: * $bar = 456, * $array = ['foo' => 123, 'baz' => 78
<?php
$array = [
'foo' => 123,
'bar' => 456,
'baz' => 789
];
$bar = array_get_and_remove($array, 'bar');
/* Outputs:
* $bar = 456,
* $array = ['foo' => 123, 'baz' => 789]
*/
没有一个内置函数。阿玛德·乌拉(Aammad Ullah)做得很对,虽然我做得太多了,但这里有一个简单的方法$result
将包含'bar'=>456
并且将从$array
中删除:
$array = array_diff_key($array, $result = ['bar' => $array['bar']]);
- 将
'bar'=>$array['bar']
数组分配给$result
- 计算数组和
$result
使用阵列拼接()
:
- 获取字符串键的数组
array\u keys()
- 在该数组中搜索
返回数字键/偏移量bar
array\u Search()
- 使用该偏移量和长度
删除该元素并返回它1
array\u splice()
current()
:
因此,要实现您的功能(请确保使用参考&
):
然后:
你可以使用
array\u splice()
array\u splice()
只对数字索引有效?它与键的偏移量一起工作,所以如果你有一个字符串键,你只需搜索它,就可以用array\u search()
获得偏移量。必须比array\u splice()
:-)更简单。我想使用array\u diff\u key()
,所以它得到的差异是基于键的,而不是基于值的。也没有array\u column()
解决方案?我很失望:好的观点。只要值是唯一的但经过编辑,它就可以工作,因为它可能不会。我可以做array\u column()
,但没有多大意义;-)好吧,该死的,我的超负荷了!
$result = array_splice($array, array_search('bar', array_keys($array), true), 1);
$result = current(array_splice($array, array_search('bar', array_keys($array), true), 1));
$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');