Natsort不能正常工作

时间:2016-08-10 12:37:51

标签: php

我有一个显示图库的脚本,图库中的图像是使用scandir(函数)从目录中提取的。我使用natsort以数字方式对图像进行排序(所有图像只有数字,例如:1.jpg 12.jpg 13.jpg等等)。

Natsort应该订购它们,但是图像根本没有排序。

我的代码:

function scan_dir($dir) {
    $ignored = array('.', '..', '.svn', '.htaccess','index.html');

    $files = array();
    foreach (scandir($dir) as $file) {
        if (in_array($file, $ignored)) continue;
        $files[$file] = filemtime($dir . '/' . $file);
    }

    natsort($files);
    $files = array_keys($files);

    return ($files) ? $files : false; 
}
    if(is_dir($_SERVER['DOCUMENT_ROOT'].'/_intern/SNM/cms/images/Projecten/'.$contentcr[0]['alias'].'/') != FALSE){
        foreach(scan_dir($_SERVER['DOCUMENT_ROOT'].'/_intern/web/cms/images/Projecten/'.$contentcr[0]['alias'].'/') as $entry) {
            $gallery .= '
             <a href="/_intern/web/cms/images/Projecten/'.$contentcr[0]['alias'].'/'.$entry.'">
                  <img class="galleryimgs" title="'.$contentcr[0]['alias'].'" alt="'.$contentcr[0]['alias'].'" src="/_intern/web/cms/images/Projecten/'.$contentcr[0]['alias'].'/'.$entry.'" />
             </a>';
        }
    }else{
        echo '';    
    }
    echo $gallery;

1 个答案:

答案 0 :(得分:1)

简短回答是:

natsort($files)按值排序,而不是按键排序。它实际上等同于sort($files,SORT_NATURAL)

如果您想对键进行排序(这是您需要的),您需要使用:

ksort($files,SORT_NATURAL)

可以在http://php.net/manual/en/array.sorting.php

的手册页中找到PHP排序函数的完整列表