Я пытаюсь показать изображения на своем веб-сайте с помощью 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);
Функция сравнения должна возвращать целое число меньше, равно или больше нуля, если первый аргумент считается соответственно меньше, равен или больше второго.
Вы возвращаете логическое значение (true / false). Попробуйте поменять местами <
с -
, И если то, что вы получаете, является противоположностью того, что вы должны иметь, поменяйте местами $a
с $b
и это должно заказать это правильным способом.
Ты можешь использовать 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