Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种内置的方法来检索PHP数组元素,从而将其从数组中删除?_Php_Arrays - Fatal编程技术网

是否有一种内置的方法来检索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数组元素,从而将其从数组中删除?类似于,但在特定索引上?例如:

<?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');