2016-06-15 3 views
0

나는 firstName으로 다차원 배열을 정렬하려고하고있다. 나는 많은 연구를 해왔고 내 문제와 비슷한 것을 찾을 수 없다.PHP에서 이름으로 다차원 배열을 정렬하는 방법?

(
[0] => Array 
    (
     [lastName] => Mark 
     [firstName] => White 
    ) 

[1] => Array 
    (
     [lastName] => Brown 
     [firstName] => Peter 

[2] => Array 
    (
     [lastName] => Paul 
     [firstName] => Vo 
    ) 

[3] => Array 
    (
     [lastName] => MCLwous 
     [firstName] => Luis 
    ) 

[4] => Array 
    (
     [lastName] => Zumilia 
     [firstName] => Mario 
    ) 

[5] => Array 
    (
     [lastName] => Carl 
     [firstName] => Burns 
    ) 
) 
당신은 정렬 usort 기능을 사용할 수 있습니다
+0

http://php.net/manual/en/ function.array-multisort.php – jszobody

+0

@jszobody 이미 그 중 하나를 살펴본 결과 내 작업에 구현하는 방법을 실제로 이해할 수 없습니다. ( – progx

답변

2

사용자 - 정의 된 비교 함수를 사용하여 배열 :

usort($array, function($v1, $v2) { return strcmp($v1['firstName'], $v2['firstName']); }); 

또는 당신은 Nspl에서 sorted 기능을 사용할 수 있습니다 : 내가 가지고있는

use function \nspl\a\sorted; 
$sorted = sorted($array, 'firstName'); 
+0

@lhor Burlachenko 정말 고마워요 !! – progx

+1

정말 Laravel Collections 당신이 그들에게 접근 할 수 있다면, 그것들은 훌륭하고, 원시 PHP를 사용하는 것보다 훨씬 더 깔끔한 코드를 만들 수 있습니다. – beeglebug

0

먼저 생각 수동으로 각 'firstName'을 확인하고 firstName과 userId를 별도의 사전에 보관하는 것입니다. 그런 다음 정렬 된 사전을 사용하여 다른 빈 배열의 요소를 재정렬하십시오 (값 또는 키로 사전을 정렬하는 것이 가능합니다.). 그것은 빠른 답변입니다. :) 당신이 질문 laravel 태그로

2

것은, 내가 당신에게 사용 가능한 프레임 워크, 특히 방법 Collections을 사용 때 사용하는 대답주지 :

$sorted = collect($arr)->sortBy('firstName');

주, 그건를 반환합니다 laravel Collection, php 배열보다는. 당신이 다시 일반 PHP 배열로 밖으로 정렬 된 데이터를 원하는 경우

, 당신은 마지막에 toArray에 대한 호출을 추가합니다 :

$sorted = collect($arr)->sortBy('firstName')->toArray();

관련 문제