첫 번째로 YES는 여기에 100 번 묻는 중복 문제이며 많은 게시물을 읽었지만 주어진 예제는 작동하지 않습니다 100 나를 위해 % 내가 어디 잘못 가고 있는지 알아낼 수 없습니다.PHP는 다차원 배열을 정렬하고 하나의 열만 정렬 할 수 있습니다.
'distance'키를 사용하여 배열을 정렬하고 전체 배열에 대해 정렬을 "확장"하여 배열의 모든 키를 재정렬합니다. 본질적으로 스프레드 시트에서 열을 정렬하고 모든 열에서 정렬을 확장하면 얻을 수있는 것과 마찬가지입니다.
다음은 샘플 배열이다 : 나는 '거리'에 의해 배열을 정렬하기 위해 노력하고있어
$locations = array (
[phone] => Array (
[0] => 555-123-1234
[1] => 555-456-4321
[2] => 555-789-1122
[3] => 555-321-1111)
[address] => Array (
[0] => 123 Main Street BigCity, NY 12345
[1] => 456 Maple Street Somewhere, UT 87654
[2] => 999 1st Ave MyTown, VA 23456
[3] => 321 2nd Ave MyTown, VA 23456)
[distance] => Array (
[0] => 24.56
[1] => 13.05
[2] => 23.99
[3] => 1.75)
[name] => Array (
[0] => First Location
[1] => Second Location
[2] => Third Location
[3] => Fourth Location)
)
, 그리고 내가는 array_multisort() 함수와에 usort() 함수를 모두 사용하여 시도했다 ... 그러나 "multisort"만이 거리를 정렬하고 거리에 따라 전체 배열을 정렬하지 않음으로써 거의 유용한 결과를 제공합니다.
내 기능 :
array_multisort($locations['distance'], SORT_NUMERIC);
내가 다음 배열을 통과하고 키를 사용하여 값을 뱉어하기 "에 대한"루프를 실행합니다. 결과적으로 거리가 정렬되지만 위치 이름, 주소 등은 재정렬되지 않습니다.
내가 여기에 무엇을 놓치고 있습니까 ??
감사합니다.
감사를
See it working을 그것으로 주위에 플레이가 : 그래서 다음에, 우리는
address
기준으로 정렬 할 수 있으며, 우리는과 같이 할 수있다! 내가 이해하지 못했던 부분은이 기능들이 배열을 어떻게보고 있는지에 관한 부분입니다.그러나, 예제를 사용하여 모든 행을 원하는대로 정렬해야했습니다. 이유는 모르겠지만 multisort 함수에서 모든 행을 추가하면 작동합니다. 그 이유에 대한 어떤 생각? – gtr1971'array_multisort()'는 여러 가지 방법으로 사용될 수 있지만,이 옵션은 SQL 질의에서'order by' 절과 비슷합니다. 그리고 SQL에서는 항상 행을 처리합니다. 데이터 집합을 정렬하는 방법을 알고 있으므로 (열) 정렬 할 데이터 집합을 전달한 다음 전체 규칙 집합에 따라 정렬 할 수 있도록 전체 집합을 마지막 인수로 전달해야합니다. 그래서 'SELECT 전화, 주소, 거리, 이름 FROM locations ORDER BY distance' – DaveRandom
이것은'전화 번호, 주소, 거리, 이름 FROM locations ORDER BY 거리, 주소, 이름, 전화 '와 동일합니다. '$ locations, SORT_CONST' 값은'$ locationsAsRows'의 전체 데이터 세트가'ORDER BY' 절의 다른 레벨과 같습니다. 그래서'$'[ 'phone'], SORT_ASC'는 아마도 두 개의 레코드가'distance','address'와'name'에 대해 똑같은 값을 가지지 않는다면 절대로 도달하지 않을 것입니다. – DaveRandom