Ответ 1
$value = reset($arr);
$key = key($arr);
(в этом порядке)
См. reset()
Руководство по PHP,
key()
Руководство по PHP.
unset($arr[$key]); # in case you want to remove it.
Однако array_pop()
Руководство по PHP работает с последним элементом:
$value = end($arr);
$key = key($arr);
unset($arr[$key]); # in case you want to remove it.
См. end()
Руководство по PHP.
Для развлечения:
list($value, $key) = array(end($arr), key($arr));
или
extract(array('value'=>end($arr), 'key'=>key($arr)));
или
end($arr);
list($key, $value) = each($arr);
или любой другой стиль игры, который вам нравится;)
Работа с пустыми массивами
До сих пор не хватало информации о пустых массивах. Поэтому нужно проверить, есть ли последний (первый) элемент, а если нет, установите $key
в null
(поскольку null
не может быть ключом массива):
for($key=null;$key===null&&false!==$value=end($arr);)
unset($arr[$key=key($arr)]);
Это даст для заполненного массива, такого как $arr = array('first' => '1st', 'last' => '2nd.');
:
string(4) "2nd." # value
string(4) "last" # key
array(1) { # leftover array
["first"]=>
string(3) "1st"
}
И пустой массив:
bool(false) # value
NULL # key
array(0) { # leftover array
}
Боитесь использовать unset?
Если вы не доверяете unset()
имеющему требуемую производительность (из чего я не думаю, что это действительно проблема, хотя я не выполнял никаких показателей), вы можете использовать встроенную реализацию array_pop()
(но я действительно думаю, что unset()
как языковая конструкция может быть еще быстрее):
end($arr);
$key = key($arr);
$value = array_pop($arr);