2013-04-09 2 views
0

아래에 설명 된대로 키 배열이 아닌 키 배열로 정렬해야하는 간단한 다중 배열을 사용했습니다.PHP 배열 정렬 키

1, 11, 12, 2, 20, 3, 31, 등 ... 을 그리고하지 1,2,3,4,11,12,

이 내 주문 기능입니다 :

private function orderByKey(&$array) { 
     ksort($array); 
     foreach($array as $value) { 
      if (is_array($value)) { 
       $this->orderByKey($value); 
      } 
     } 
    } 

array(
    1 => array(
     2 => array(); 
     11 => array(); 
     20 => array(); 
     31 => array(); 
     4 => array(); 
     43 => array(); 
     12 => array(); 
     3 => array(); 
    ); 
    2 => array(); 
    11 => array(); 
    20 => array(); 
    31 => array(); 
    4 => array(); 
    43 => array(); 
    12 => array(); 
    3 => array();); 

문제는 내 주문 나의 배열이 같은 주문 반환하는 것입니다

여기에 무슨 문제가 있습니까?

감사합니다.

답변

4

당신은 $ 배열

private function orderByKey(&$array) { 
     ksort($array); 
     foreach($array as &$value) { 
      if (is_array($value)) { 
       $this->orderByKey($value); 
      } 
     } 
    } 
+0

했다. – MGP

1

즉 정렬() 및 ksort()에 대한 파라미터는 제 sort_flags 인의 항목을 기준으로 $ 값에 접근해야한다.

ksort($my_array, SORT_NUMERIC); 

체크 아웃 종류의 페이지() 다른 종류의 플래그는 다음과 같습니다 (가 현재처럼 보이는)이이 번호를 기준으로 정렬, 그리고 문자열 값에 될하려는 경우 해당 매개 변수를 설정해야 설명 : http://www.php.net/manual/en/function.sort.php

+1

그건 문제가 아니에요. 참고/가치 문제입니다. – Uby

0
ksort($myarray); 
foreach ($myarray as $key => $val) { 
    echo "$key = $val\n"; 
} 
1

다음 나는 또한 당신이 당신의 질문에 (1, 11, 12, 2, 20, 3, 31, ...)를 개설 순서대로 키를 정렬하는 문제가있어 그 질문을 읽어 하위 배열을 정렬하지 않도록 : 대신 ksort의 :

,536 : 3보다 큰 (20)보다는 작은 30

전체 코드되도록

uksort($array, function($a, $b) { 
    return strcmp("$a ", "$b "); 
}); 

이러한 종류의 패드를 각 키 공백을 수행

private function orderByKey(&$array) { 
    if (!is_array($array)) return; 
    uksort($array, function($a, $b) { 
     return strcmp("$a ", "$b "); 
    }); 
    array_walk($array, [$this, 'orderByKey']); 
} 

또는 당신을 위해 ksort() 일 경우 :이 실제로 내 $ 값을 참조하는 문제가 아니라,

private function orderByKey(&$array) { 
    if (!is_array($array)) return; 
    ksort($array);   
    array_walk($array, [$this, 'orderByKey']); 
} 
+0

공백에는 아무런 문제가 없습니다. 더 나은 가독성을 위해 텍스트가 누군가에 의해 편집되었습니다. ¬nways, "orderByKey"함수의 정리 주셔서 감사합니다 :) – MGP