是否有一种内置的方法来检索PHP数组元素,以便将其从数组中删除


Is there a built-in way to retrieve a PHP array element such that it is removed from the array?

是否有一种内置的方式来检索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));