2012-05-25 5 views
2

문자와 숫자로 배열을 정렬 할 때
$ a = array (0, 1, 'a', 'A'); sort ($ a); print_r ($ a);배열에 숫자와 문자가 포함 된 정렬

결과가 그렇게 나를 혼란스럽게 :

Array ([0] => a [1] => 0 [2] => A [3] => 1) 

왜 'A'와 'A'에서의 '0'?

+2

php.net - 경고 : sort()가 예측할 수없는 결과를 가져올 수 있기 때문에 유형 값이 혼합 된 배열을 정렬 할 때주의하십시오. –

+0

@Evan Mulawski, 그런 다음 ASCII에서 배열을 어떻게 정렬합니까? 나는 다음과 같은 결과를 제외하고는 : array (0,1, a, A) ... – steve

+0

SORT_NUMERIC에 두 번째 매개 변수를 지정하십시오. http://php.net/manual/en/function.sort.php를 참조하십시오. 그리고 대문자는 ASCII에서 소문자 앞에옵니다. –

답변

1

이렇게하면 숫자가 문자열로 변환됩니다. 숫자 문자 ASCII 값은 두 경우 사이에옵니다.

문자열이 숫자로 변환됩니다. 부동 소수점 변환에 사용할 수있는 '.', 'E'또는 'e'가 없으면 처음에는 숫자 문자를 사용하고 비교하려면 다른 모든 문자를 삭제합니다. 숫자가없는 문자는 0으로 평가됩니다.

+0

@EvanMulawski 실제로는 http://www.asciitable.com/ – jeschafe

+0

이 아니며'SORT_NATURAL' 또는'SORT_STRING'을 지정하는 것이 좋습니다 – goat

+0

@jeschafe, 맞습니다. 나는 그걸 붙잡아 고쳤다. – tyjkenn

관련 문제