2013-07-02 2 views
0

다차원 배열이 있고 각 배열의 값으로 정렬하려고합니다.값으로 다차원 배열 정렬

실제로 다차원 배열을 그 값으로 정렬하지 않았고 나 자신도 기쁨이 없었습니다.

배열 내의 값으로 정렬 할 때 아래의 배열과 출력 예를 제공했습니다.

배열

$list = array (
     0 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="7">', 
       1 => '7', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Katie-Lee', 
       5 => 'Homes', 
       6 => '[email protected]' 
     ), 
     1 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="22">', 
       1 => '22', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'John', 
       5 => 'Collins', 
       6 => '[email protected]', 
     ), 
     2 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="9">', 
       1 => '9', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Rob', 
       5 => 'Smith', 
       6 => '[email protected]', 
     ), 
     3 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="1">', 
       1 => '1', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Claire', 
       5 => 'Taylor', 
       6 => '[email protected]', 
     ), 
); 

키 $리스트 [] [1] (ID) 키 $리스트 [] [6] (이메일)

$list = array (
    0 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="22">', 
       1 => '22', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'John', 
       5 => 'Collins', 
       6 => '[email protected]', // <-- Sort by email 
     ), 
     1 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="7">', 
       1 => '7', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Katie-Lee', 
       5 => 'Homes', 
       6 => '[email protected]' // <-- Sort by email 
     ), 
    2 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="1">', 
       1 => '1', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Claire', 
       5 => 'Taylor', 
       6 => '[email protected]', // <-- Sort by email 
     ), 
     3 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="9">', 
       1 => '9', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Rob', 
       5 => 'Smith', 
       6 => '[email protected]', // <-- Sort by email 
     ), 

); 
의해

$list = array (
    0 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="1">', 
       1 => '1', // <-- Sort by id 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Claire', 
       5 => 'Taylor', 
       6 => '[email protected]', 
     ), 
    1 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="7">', 
       1 => '7', // <-- Sort by id 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Katie-Lee', 
       5 => 'Homes', 
       6 => '[email protected]' 
     ), 
    2 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="9">', 
       1 => '9', // <-- Sort by id 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Rob', 
       5 => 'Smith', 
       6 => '[email protected]', 
     ), 
    3 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="22">', 
       1 => '22', // <-- Sort by id 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'John', 
       5 => 'Collins', 
       6 => '[email protected]', 
     ), 
); 

정렬 정렬

도움을 주시면 감사하겠습니다. 나는 아래의 코드로 업데이트 한

업데이트는 다른 사람을 위해 일하고 표시합니다.

$list = array (
     0 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="7">', 
       1 => '7', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Katie-Lee', 
       5 => 'Homes', 
       6 => '[email protected]' 
     ), 
     1 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="22">', 
       1 => '22', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'John', 
       5 => 'Collins', 
       6 => '[email protected]', 
     ), 
     2 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="9">', 
       1 => '9', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Rob', 
       5 => 'Smith', 
       6 => '[email protected]', 
     ), 
     3 => array(
       0 => '<input class="id" name="id[]" type="checkbox" value="1">', 
       1 => '1', 
       2 => '17', 
       3 => 'Group Name', 
       4 => 'Claire', 
       5 => 'Taylor', 
       6 => '[email protected]', 
     ), 
); 

echo 'Array before sort:'; 
print("<pre>" . print_r($list, true). "</pre>"); 

$sortField = 6; // the id 

usort($list, function($a, $b) use ($sortField) 
{ 
     return strnatcmp($a[$sortField], $b[$sortField]); 
}); 

echo 'Array after sort:'; 
print("<pre>" . print_r($list, true). "</pre>"); 
+0

[어떻게 PHP에서 다차원 배열을 정렬합니까] (http://stackoverflow.com/questions/96759/how-do-i-sort-a-multidimensional-array-in-php) – Jon

+0

가능한 복제 [참조 : PHP에서 배열을 정렬하는 모든 기본 방법] (http://stackoverflow.com/questions/17364127/reference-all-basic-ways-to-sort-arrays-in-php) –

답변

0

php 5.3 이상을 사용하는 경우 usort와 클로저를 사용할 수 있습니다. 이와

$sortField = 1; // the id 

usort($array, function($a, $b) use ($sortField) { 
     return strnatcmp($a[$sortField], $b[$sortField]); 
}); 

당신은 이제까지 필드는하는 SortField 변수에 지정된 기준으로 배열을 정렬 할 수 있습니다.

+0

나는 귀하의 코드를 사용하여 질문하지만 그것은 단지 "사실"을 반환합니다. 어떤 아이디어? 감사합니다 – arbme

+0

나는 그것을 알아 냈다 :) 도와 줘서 고마워. – arbme