2016-08-22 3 views
1

array_multisort의 버그입니까? 아니면 동작을 설명 할 수 있습니까? 나는 PARAM의 $의 키 순서를 변경하는 경우 서브 어레이를 비교할 때 array_multisort 동작

$a = array(
    "aa" => array("2" => "2"), 
    "a" => array("1" => "1"), 
); 
array_multisort($a); 
print_r($a); 

인쇄

Array 
(
    [aa] => Array 
     (
      [2] => 2 
     ) 

    [a] => Array 
     (
      [1] => 1 
     ) 

) 

아래의 코드는 아래와 같이도 인쇄 결과는 다른 순서를 가지고

$a = array(
    "a" => array("1" => "1"), 
    "aa" => array("2" => "2"), 
); 

array_multisort의 결과가 두 경우 모두 동일 할 것으로 기대합니까?

+1

두 서브 어레이는 정확히 동일한 양의 요소를 가지므로 동일한 것으로 간주됩니다. 그래서 순서는 정의되지 않습니다. – Rizier123

답변

0

가 정답이다. 하위 배열의 요소 수는 정렬 순서를 결정합니다.

질문의 예에서 array_multisort 대신 ksort을 사용하면 항상 동일한 결과가 생성됩니다.

+0

예제에 정렬 플래그가 지정되어 있지 않습니다. – mozey

+0

이 자습서를 확인하십시오 (http://www.w3schools.com/php/func_array_multisort.asp) – Joyson

-1

Rizier123에 의해 게시 코멘트를 정렬 배열 사용 array_multisort($num,SORT_DESC,SORT_NUMERIC); 사용 SORT_NUMERIC에 숫자 값에 대한

관련 문제