2010-07-23 4 views
1

배열을 정렬하고 파일 확장자가있는 이미지가 포함되어 있으며 파일 이름은 숫자이고 파일 확장자는 분명히 문자열입니다.PHP로 배열을 적절하게 정렬

$files = array(); 
$files[] = '4.jpg'; 
$files[] = '14.jpg'; 
$files[] = '1.jpg'; 
$files[] = '44.jpg'; 

내가 종류의() 후 나는 다음과 결국 사용하는 경우 :

sort($files); 
print_r($files); 

Array 
(
    [0] => 1.jpg 
    [1] => 14.jpg 
    [2] => 4.jpg 
    [3] => 44.jpg 
) 

무엇 내가 실제로 원하는 것은 :

Array 
(
    [0] => 1.jpg 
    [1] => 4.jpg 
    [2] => 14.jpg 
    [3] => 44.jpg 
) 

이 가능합니까?

답변

4

이 일의 가장 빠른 가장 쉬운 방법은 함께 natsort() - 예를 들어, http://php.net/manual/en/function.natsort.php

:이 기능은 인간이 키를 유지하는 것 중에 방식으로 영숫자 문자열을 정렬하는 알고리즘으로 구현

natsort($files); 
print_r($files); 

Array 
(
    [0] => 1.jpg 
    [1] => 4.jpg 
    [2] => 14.jpg 
    [3] => 44.jpg 
) 

/값 연결. 이것은 "자연적 순서"라고 표현됩니다.

당신은 또한 선택적인 두 번째 매개 변수 sort_flags이 값 사용하여 정렬 방법을 변경하는데 사용된다

sort($files, SORT_NUMERIC); 
print_r($files); 

Array 
(
    [0] => 1.jpg 
    [1] => 4.jpg 
    [2] => 14.jpg 
    [3] => 44.jpg 
) 

sort() 기능에 sort_flags 옵션을 사용할 수 있습니다

:

정렬 형태 플래그 :

SORT_REGULAR - 일반적으로 항목 비교 (유형 변경하지 않음)

SORT_NUMERIC-을 SORT_LOCALE_STRING 문자열

같은 항목을 비교 - - 문자열로 항목을 비교, 현재 로케일에 따라 수치

SORT_STRING 항목을 비교합니다. PHP 4.4.0과 5.0.2에 추가되었으며 setlocale()을 사용하여 변경할 수있는 시스템 로케일을 사용합니다.

+0

당신이 당신의 예를 들어 잘못된 있어요 : P – knittl

+0

는 죄송합니다 .. 지금 고정을 .. 감사합니다 – Lizard

0
$files = array(); 
$files[] = '4.jpg'; 
$files[] = '14.jpg'; 
$files[] = '1.jpg'; 
$files[] = '44.jpg'; 
sort($files, SORT_NUMERIC); 
print_r($files); 

Array 
(
    [0] => 1.jpg 
    [1] => 4.jpg 
    [2] => 14.jpg 
    [3] => 44.jpg 
) 
관련 문제