usort по дате создания не работает

Я пытаюсь показать изображения на своем веб-сайте с помощью php usort, поэтому новые изображения должны быть вверху, а самые старые — внизу. Я попытался использовать usort, но он не работает, и изображения по-прежнему отображаются противоположным образом, старые находятся вверху, а новые — внизу. Что-то не так с моим кодом, или почему это происходит? (Я прочитал все темы здесь в stackoverflow, которые имеют что-то общее, но я не понял, что не так.)

Я использую этот код:

$folder_path = 'posters/';

$num_files = glob($folder_path . "*.{JPG,jpg,gif,png,bmp}", GLOB_BRACE);
usort( $num_files, function( $a, $b ) { return filemtime($a) < filemtime($b); } );

$folder = opendir($folder_path);

0

Решение

Функция сравнения должна возвращать целое число меньше, равно или больше нуля, если первый аргумент считается соответственно меньше, равен или больше второго.

Вы возвращаете логическое значение (true / false). Попробуйте поменять местами < с -, И если то, что вы получаете, является противоположностью того, что вы должны иметь, поменяйте местами $a с $b и это должно заказать это правильным способом.

0

Другие решения

Ты можешь использовать filemtime() функция, которая получает время модификации файла. В этом случае вы получите весь список изображений в порядке возрастания, так что вы хотите показать список как время последнего изменения, в этом случае необходимо полностью изменить изображение, используя usort() функция с пользовательской функцией, которая сравнивает время изменения, затем перечисляет его

<?php
function latestImageProcess($compare1, $compare2)
{
$first_compare = filemtime($compare1);
$second_compare = filemtime($compare2);

if ($first_compare == $second_compare) {
return 0;
}
else if ($first_compare < $second_compare) {
return -1;
}
else {
return 1;
}
}

$images_list = glob("posters/*.*");
usort($images_list, "latestImageProcess");

for ($i = count($images_list) - 1; $i >= 0; $i--) {
$image_name = $images_list[$i];
echo '<img src="' . $image_name . '" height ="400" title="'.$image_name.'"/><br />';
}
?>

надеюсь, что это поможет вам и для получения дополнительной информации о filemtime

http://php.net/manual/en/function.filemtime.php

0

По вопросам рекламы [email protected]