2011-10-14 5 views
2

많은 비슷한 질문이 있으며 거의 ​​해결책이 있지만 클라이언트가 원하는대로 정렬되지 않은 사례가 있습니다.다차원 배열의 파일 목록 정렬

내 배열을 정렬하기 위해 다음과 같은 기능을 사용하고 있습니다 :

  1. file2.png
  2. 파일 3 :

    function sortFilesByName($a, $b) { 
        if (basename(strtolower($a['path'])) == basename(strtolower($b['path']))) { 
         return 0; 
        } 
        return (basename(strtolower($a['path'])) < basename(strtolower($b['path']))) ? -1 : 1; 
    } 
    

    문제는 내 목록을 정렬 할 때 나는 다음과 같은 순서를 얻을 수 있다는 것입니다. PNG

  3. file4.png
  4. file5.png
  5. file6.png
  6. file7.png
  7. file8.png
  8. file9.png
  9. file10.png
  10. file11.png
  11. file1.png

클라이언트 싶습니다 목록의 상단에 file1.png가 있어야하고 나는 그것을 어떻게 달성하는지 조금 혼란스러워합니다.

function sortFilesByName($a, $b) { 
    return strnatcmp(strtolower(basename($a['path'])), strtolower(basename($b['path']))); 
} 

을 그리고 그것은 작동합니다 어떤 도움이 :) 감사 답변 후

내가 훨씬 더 가까이 왔 감안할 때, 나는 다음에 내 기능을 변경! 감사!

답변

3

대신 natsort(); 함수가 필요하다고 생각합니다. 영숫자로 정렬됩니다.

<?php 
    $numbers = array("1.gif","2.gif","20.gif","10.gif"); 
    natsort($numbers); 
    print_r($numbers); 
?> 

출력

Array 
(
[0] => 1.gif 
[1] => 2.gif 
[3] => 10.gif 
[2] => 20.gif 
) 
+0

감사합니다, 당신의 대답은 저를 올바른 위치로 인도하고 제 질문에 새로운 기능을 게시했습니다. – Gazillion