2014-02-25 2 views
1

나는 사용자 정의 순서로 배열에있는 디렉토리 목록을 정렬하려고합니다.usort를 사용하여 PHP에서 배열을 사용자 지정 정렬

나는 usort를 사용해 보았지만 원하는 결과를 얻지 못했습니다.

또한 여기 usort에서 사용되는 $ a와 $ b에 대해 설명하고 싶습니다.

$dir = '/tmp'; 

$dir_list=scan_dir($dir); 

//now this $dir_list array for the sake of this example contains the following elements 

$dir_list=array('dir1','dir2','newdir2','string1'); 

$order=array('newdir2','dir1','string1','dir2'); 

//all the values in both the arrays are strings. 

내가 여기에 다음과 같은 해결책을 찾았지만 $ A, $ B와 키워드 '사용'의 사용이

usort($dir_list, function ($a, $b) use ($order) 
{ 

    $pos_a = array_search($a['id'], $order); 

    $pos_b = array_search($b['id'], $order); 

    return $pos_a - $pos_b; 

}); 

var_dump($dir_list); 
+1

'usort' 설명을 읽으셨습니까? (http://www.php.net/manual/en/function.usort.php) – hindmost

답변

0

에 usort 사용자에 따라 배열을 정렬하는 기능입니다 무엇을 설명해주십시오 함수를 정의하십시오. 배열을 정렬하는 기본 개념에 대해 말하면 배열 정렬은 배열의 두 멤버를 항상 일치시켜 어느 것이 더 크거나 작거나 같은지 확인합니다. 따라서 $ a, $ b는 $ dir_list 배열의 두 멤버입니다 (어떤 색인든지에) 분류의 어떤 반복든지에 비교 될 것입니다.

새 키워드는 상위 범위에서 변수를 상속하는 데 사용됩니다. 위의 예에서와 같이 $ order를 사용해야하지만 $ order는 익명 함수 외부에서 정의되므로 익명 함수의 범위 내에서 $ order 변수를 가져 오는 데 키워드를 사용합니다.

관련 문제