Печать файла с PHP по дате [дубликат]

Как указывали другие, вы можете использовать DoEvents для освобождения процессора для выполнения других действий перед продолжением. Когда я использую DoEvents в цикле, я использую счетчик.

Dim iCounter as Integer

Do Until
' some code here
   iCounter=iCounter+1
   If iCounter = 100 then
      DoEvents
      iCounter=0
   End if
Loop

Это позволяет DoEvents запускать слишком часто, а ваш общий код замедляется. Отрегулируйте счетчик на любую итерацию, которая вам подходит.

45
задан cole 24 September 2008 в 02:51
поделиться

3 ответа

Для будущих поколений, если сообщение, связанное с сообщением в принятом ответе, утеряно или нечеткое для кого-то, необходим соответствующий код:

<?php

$myarray = glob("*.*");
usort($myarray, create_function('$a,$b', 'return filemtime($a) - filemtime($b);'));

?>

Протестировано это в моей системе и проверил его сортирует файл mtime по желанию. Я использовал аналогичный подход (написанный на Python) для определения последних обновленных файлов на моем сайте.

87
ответ дан Jay 19 August 2018 в 02:41
поделиться
  • 1
    Работала красиво. Мне нужен обратный порядок, поэтому я поменял $ a на $ b в поле определения функции. Спасибо, Джей! – AVProgrammer 12 January 2012 в 00:53
  • 2
    Я просто использовал это снова. Для потомства! – AVProgrammer 28 March 2012 в 22:21
  • 3
    Этот код обращается к файловой системе каждый раз, когда производится сравнение (несколько раз для каждого файла). В зависимости от вашей файловой системы это может быть очень медленным. Кроме того, если какой-либо из файлов записывается во время сортировки, то изменение времени файла может привести к необычным результатам сортировки в зависимости от алгоритма, используемого usort. Я бы рекомендовал другой ответ , который избегает всех этих проблем. – Matt 27 June 2013 в 19:43
  • 4
    Хм, теперь я начинаю сомневаться в моем выборе карьеры ... – AVProgrammer 18 December 2013 в 10:43
  • 5
    Если вы используете PHP 5.3.0 или новее, вместо него следует использовать собственную анонимную функцию. php.net/create_function – xd6_ 29 January 2015 в 15:33
<?php
$items = glob('*', GLOB_NOSORT);
array_multisort(array_map('filemtime', $items), SORT_NUMERIC, SORT_DESC, $items);
32
ответ дан Alf Eaton 19 August 2018 в 02:41
поделиться
  • 1
    Нет смысла передавать результат array_map в качестве аргумента, который должен быть передан по ссылке. Вы отсортируете его, а потом что? У вас его больше нет. – Okonomiyaki3000 15 April 2014 в 06:47
  • 2
    Результат array_map используется для сортировки массива $items, который также передается по ссылке. – Alf Eaton 15 April 2014 в 21:34
  • 3
    Понимаю. Думаю, это сработает, аналогичный подход даже задокументирован на странице array_multisort php.net. Я думаю, что для этой задачи есть более подходящие функции, но я заберу свой downvote. Или я бы, если бы мог ... извините. – Okonomiyaki3000 16 April 2014 в 06:18
  • 4
    @ Okonomiyaki3000: Я заменил ваш downvote, так как он был невежественным. – AbraCadaver 10 March 2016 в 20:36
  • 5
    Протестировано и не правильно сортируется в реальной жизни, несмотря на то, что это выглядит как сексуальный oneliner. – Viktor Joras 25 June 2018 в 07:17

Это решение такое же, как принятый ответ , обновленный анонимной функцией1:

$myarray = glob("*.*");

usort( $myarray, function( $a, $b ) { return filemtime($a) - filemtime($b); } );

1 Анонимные функции были введены в PHP в 2010 году. Оригинальный ответ датирован 2008 годом.

9
ответ дан Community 19 August 2018 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: