Действительно ли возможно использовать array_shift () в PHP и получить ключ?

У меня есть список файлов в массиве, где имя файла является ключом, и значение является последней измененной датой в секундах. Они отсортированы от самых старых до новейших.

Файлы glob()'d в, и затем отсортированный этот способ использовать

asort($fileNameToLastModified, SORT_NUMERIC);

Я использую array_shift () для получения самого старого файла. К сожалению, это, кажется, дает мне значение и там, кажется, не способ получить ключ.

Был бы единственный способ сделать это быть чем-то вроде этого?

$keys = array_keys($fileNameToLastModified);

$oldest = array_shift($keys);
array_shift($fileNameToLastModified); // to manually chop the first array member off too.

... или есть ли встроенный метод, чтобы сделать это?

10
задан alex 19 March 2013 в 03:46
поделиться

3 ответа

$result = array_splice( $yourArray, 0, 1 );

... должно сработать. See array_splice.

16
ответ дан 3 December 2019 в 17:19
поделиться

Вы также можете сделать это:

<?php

$arr = array('a' => 'first', 'b' => 'second');

// This is your key,value shift line
foreach($arr as $k => $v) { break; }

echo "Key: $k\nValue: $k";

Будет выведено:

Key: a
Value: first

Я не уверен, какова производительность, поэтому вы можете выполнить профилирование, но это, вероятно, будет быстрее, чем array_keys ( ) для больших массивов, поскольку нет необходимости перебирать все элементы.

0
ответ дан 3 December 2019 в 17:19
поделиться

Вы можете взглянуть на key () , current () или каждый () . Они делают то, о чем вы просили.

Я не совсем уверен, собираетесь ли вы впоследствии получить больше пар ключ / значение из массива. Поэтому я не буду вдаваться в подробности того, что еще вам может понадобиться.

0
ответ дан 3 December 2019 в 17:19
поделиться