从数组中删除第一个元素(键和值),将其转换为另一个数组

I want to capture the first element of an array and its value in a second array, removing it from the first.

Is there a core PHP function that does what my_function does here?

function my_function(&$array) {
  $key = current(array_keys($array));
  $value = $array[$key];
  unset($array[$key]);
  return [$key => $value];
}
$array = [
  'color' => 'red',
  'car' => 'ford'
  'house' => 'cottage',
];

$top = my_function($array);

print_r($top);
print_r($array);

Output:

Array
(
    [color] => red
)
Array
(
    [car] => ford
    [house] => cottage
)

If there's not a core function, is there a simpler way of achieving this behavior? IIRC, passing variables by reference is frowned upon.

Bonus question: is there a word for the combination of both key and element from an array? I feel like 'element' doesn't necessarily include the key.

edit Since there seems to be a commonly held misunderstanding, at least in PHP 7, array_shift does not do the desired behavior. It only returns the first value, not the first element:

$ cat first_element.php
<?php

$array = [
  'color' => 'red',
  'car' => 'ford',
  'house' => 'cottage',
];

$top = array_shift($array);

print_r($top);
print_r($array);

$ php first_element.php
redArray
(
    [car] => ford
    [house] => cottage
)

array_splice doesn't always preserve keys, so just get the key and combine with the result of array_shift to also remove it:

$result = [key($array) => array_shift($array)];

If needed, reset the array pointer:

reset($array) && $result = [key($array) => array_shift($array)];

Quite simple:

$array1 = [
  'color' => 'red',
  'car' => 'ford'
  'house' => 'cottage',
];
$array2 = array_unshift($array1);

--> result
$array2 = [
   'color' => 'red'
];

$array1 = [
  'car' => 'ford'
  'house' => 'cottage',
];

Try this (array_splice):

$top = array_splice($array, 0, 1);

The $top will contain the first element and the $array will contain the rest of the elements.

function my_function($array) {
    $first_key = key($array);
    return array($first_key =>$array[$first_key] );
} 
$array = array(  'color' => 'red', 'car' => 'ford','house' => 'cottage' );

$first = my_function($array);
array_shift($array);print_r($first);print_r($array);

I made this function:

function array_extract(array &$array, $num) {
  $output = array_slice($array,0, $num);
  array_splice($array,0, $num);
  return $output;
}

Here's what it does

$ cat test.php
<?php

$test = [234,25,45,78,56];

echo "test:
";
print_r($test);

while( count($test) ) {
  echo "extraction:
";
  print_r(array_extract($test, 2));

  echo "
test:
";
  print_r($test);
}

$ php test.php
test:
Array
(
    [0] => 234
    [1] => 25
    [2] => 45
    [3] => 78
    [4] => 56
)
extraction:
Array
(
    [0] => 234
    [1] => 25
)

test:
Array
(
    [0] => 45
    [1] => 78
    [2] => 56
)
extraction:
Array
(
    [0] => 45
    [1] => 78
)

test:
Array
(
    [0] => 56
)
extraction:
Array
(
    [0] => 56
)

test:
Array
(
)