Как удалить ключ и вернуть значение из массива PHP?

При использовании PHP я нахожу, что пишу код так много:

$target = $_SESSION[AFTER_LOGIN_TARGET]; unset($_SESSION[AFTER_LOGIN_TARGET]); return $target; 

В Python существует метод dict.pop , который позволил бы мне сделать что-то подобное в одном выражении без временной переменной:

 return session.pop(AFTER_LOGIN_TARGET) 

Есть ли аналогичная функция или трюк в PHP?

Solutions Collecting From Web of "Как удалить ключ и вернуть значение из массива PHP?"

Я не вижу встроенной функции для этого, но вы можете легко создать свой собственный.

 /** * Removes an item from the array and returns its value. * * @param array $arr The input array * @param $key The key pointing to the desired value * @return The value mapped to $key or null if none */ function array_remove(array &$arr, $key) { if (array_key_exists($key, $arr)) { $val = $arr[$key]; unset($arr[$key]); return $val; } return null; } с /** * Removes an item from the array and returns its value. * * @param array $arr The input array * @param $key The key pointing to the desired value * @return The value mapped to $key or null if none */ function array_remove(array &$arr, $key) { if (array_key_exists($key, $arr)) { $val = $arr[$key]; unset($arr[$key]); return $val; } return null; } 

Вы можете использовать его с любым массивом, например $_SESSION :

 return array_remove($_SESSION, 'AFTER_LOGIN_TARGET'); 

Почему о вспомогательной функции? Что-то вроде того:

 function getAndRemoveFromSession ($varName) { $var = $_SESSION[$varName]; unset($_SESSION[$varName]); return $var; } с function getAndRemoveFromSession ($varName) { $var = $_SESSION[$varName]; unset($_SESSION[$varName]); return $var; } 

Поэтому, если вы позвоните

 $myVar = getAndRemoveFromSession ("AFTER_LOGIN_TARGET"); 

у вас есть то, что вы просили (попробуйте немного, я не использовал php много раз: -])

Я думаю, что вы ищете array_slice ()

 $target = array_slice( $_SESSION, array_search('AFTER_LOGIN_TARGET', $_SESSION), 1 );