У меня есть список файлов в массиве, где имя файла является ключом, и значение является последней измененной датой в секундах. Они отсортированы от самых старых до новейших.
Файлы 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.
... или есть ли встроенный метод, чтобы сделать это?
$result = array_splice( $yourArray, 0, 1 );
... должно сработать. See array_splice.
Вы также можете сделать это:
<?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 ( )
для больших массивов, поскольку нет необходимости перебирать все элементы.
Вы можете взглянуть на key ()
, current ()
или каждый ()
. Они делают то, о чем вы просили.
Я не совсем уверен, собираетесь ли вы впоследствии получить больше пар ключ / значение из массива. Поэтому я не буду вдаваться в подробности того, что еще вам может понадобиться.