Вернуть первый ключ ассоциативного массива в PHP

Я пытаюсь получить первый ключ ассоциативного массива, не создавая временную переменную с помощью array_keys () или тому подобное, чтобы пройти по ссылке. К сожалению, и reset () , и array_shift () принимают аргумент массива по ссылке, поэтому ни один из них не кажется жизнеспособным.

С PHP 5.4 я буду в раю; array_keys ($ array) [0]; , но, к сожалению, это, конечно, тоже не вариант.

Я мог бы создать функцию для этой цели, но я могу только представить, что есть какая-то смесь Функции PHP array _ * , которые выдадут желаемый результат в одном операторе , который я не могу придумать или придумать.

Итак:

$array = array('foo' => 'bar', 'hello' => 'world');

$firstKey = assorted_functions($array); // $firstKey = 'foo'

Причина " пункт "без ссылки" в моем вопросе предназначен только для того факта, что я предполагаю, что потребуется array_keys () ( если есть способ передачи по ссылке, пожалуйста, уволите )

Я бы использовал key () , но для этого требуется reset () , поскольку я не уверен, где будет находиться указатель во время этой операции.


Дополнение

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

$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)

I знал об этом, так как PHP не имеет такие возможности оптимизации, но посчитали, что это заслуживает явного упоминания.

Краткость принятого ответа, тем не менее, хороша и будет работать, если вы работаете с массивами разумного размера .

36
задан Dan Lugg 5 February 2013 в 00:42
поделиться