일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 무료다운로드쿠폰
- jquery
- UTF-8
- 경영
- JSON
- Forms
- 웹하드추천
- Regex
- 전략
- variables
- function
- file-upload
- post
- JavaScript
- Arrays
- composer-php
- Apache
- php
- 웹하드순위
- curl
- string
- Linux
- OOP
- Ajax
- HTML
- date
- Session
- Laravel
- MySQL
- Today
- Total
개발! 딱 깔끔하고 센스있게!
PHP array multiisort 가 예상 한 다 차원 배열 에 정렬 하지 않 음 본문
나 는 array multiisort 함 수 를 사용 하여 다 차원 배열 을 정렬 하려 고 시도 하고 있다.
나 는 다 차원 배열 이 $sort 에서 가 치 를 사용 하여 자신 을 정렬 하 기 를 바란다.
$sort 는 다 차원 배열 의 volume 요소 와 관련된다.
다음 순서 로 구성 되 기 를 원 합 니 다:
'name' = > 8, 'name' = > 6, 'name' = 7, 'name' = > 9, 'name' = 10, 'name' = > 10,
돌아 온 주문 이 예상 에 부합 되 지 않 습 니 다.
아마도 내 가 여러 개의 포트 들 의 작업 원 리 를 오해 한 것 같다.
Array ( [test1] => Array ( [volume] => 67 [edition] => 2 [name] => 6 [num] => 2 ) [test2] => Array ( [volume] => 86 [edition] => 1 [name] => 7 [type] => 2 ) [test3] => Array ( [volume] => 85 [edition] => 6 [name] => 8 [type] => 2 ) [test4] => Array ( [volume] => 98 [edition] => 2 [name] => 9 [type] => 2 ) [test5] => Array ( [volume] => 86 [edition] => 6 [name] => 10 [type] => 2 ) [test6] => Array ( [volume] => 67 [edition] => 7 [name] => 11 [type] => 2 ) ) $sort = array(85, 67, 86, 98, 86, 67); array_multisort($sort, $data);
이것 은 원본 배열 입 니 다:
$data['test1'] = array('volume' => 67, 'edition' => 2, 'name' => 6, 'num' => 2,); $data['test2'] = array('volume' => 86, 'edition' => 1, 'name' => 7, 'type' => 2,); $data['test3'] = array('volume' => 85, 'edition' => 6, 'name' => 8, 'type' => 2,); $data['test4'] = array('volume' => 98, 'edition' => 2, 'name' => 9, 'type' => 2,); $data['test5'] = array('volume' => 86, 'edition' => 6, 'name' => 10, 'type' => 2,); $data['test6'] = array('volume' => 67, 'edition' => 7, 'name' => 11, 'type' => 2,);
대답 하 다.
areray Multisort 를 사용 하여 열 에 따라 정렬 할 수 있 습 니 다.
이것 은 예제 입 니 다.
"모든" 열 을 쉽게 정렬 할 수 있 습 니 다:
$data['test1'] = array('volume' => 67, 'edition' => 2, 'name' => 6, 'type' => 2); $data['test2'] = array('volume' => 86, 'edition' => 1, 'name' => 7, 'type' => 2); $data['test3'] = array('volume' => 85, 'edition' => 6, 'name' => 8, 'type' => 2); $data['test4'] = array('volume' => 98, 'edition' => 2, 'name' => 9, 'type' => 2); $data['test5'] = array('volume' => 86, 'edition' => 6, 'name' => 10, 'type' => 2); $data['test6'] = array('volume' => 67, 'edition' => 7, 'name' => 11, 'type' => 2); //Create index rows foreach ($data as $row) { foreach ($row as $key => $value){ ${$key}[] = $value; //Creates $volume, $edition, $name and $type arrays. } } //ex: sort by edition asc, then by name DESC: array_multisort($edition, SORT_ASC, $name, SORT_DESC, $data); echo ""; print_r($data); echo "
"; ?>
가 져 올 수 있 습 니 다 (먼저 버 전 ASC, 그리고 이름 대로 DESC):(이름 ASC 로 정렬 하여 test 4 와 test 1 of c 를 교환 합 니 다.
)
Array ( [test2] => Array ( [volume] => 86 [edition] => 1 [name] => 7 [type] => 2 ) [test4] => Array ( [volume] => 98 [edition] => 2 [name] => 9 [type] => 2 ) [test1] => Array ( [volume] => 67 [edition] => 2 [name] => 6 [type] => 2 ) [test5] => Array ( [volume] => 86 [edition] => 6 [name] => 10 [type] => 2 ) [test3] => Array ( [volume] => 85 [edition] => 6 [name] => 8 [type] => 2 ) [test6] => Array ( [volume] => 67 [edition] => 7 [name] => 11 [type] => 2 ) )
원한 다 면, 여러 열 을 추가 할 수 있다.
나 는 이것 이 도움 이 되 길 희망 한다.
편집: 질문아니요, 배열 의 다 중 정렬 은 미리 정 해진 순서대로 배열 을 정렬 하 는 데 사용 되 지 않 습 니 다.
areray mltrisort 의 역할 은:이것 은 지정 한 조건 (asc 또는 desc) 에 따라 배열 을 정렬 하고, 다른 배열 의 항목 을 상하 로 이동 하 며, 그 어떠한 배열 의 정렬 에 도 위반 되 지 않 습 니 다.
기본 예제:
$letters = array("b","a","c"); $numbers = array(5,4,2);
array multiisort 호출 ($letters, $numbers) a, b, c 와 (a 가 위로, b 가 아래로 이동 함) 4, 5, 2
예 를 들 어:
$letters = array("b","a","a"); $numbers = array(5,4,2);
우선 똑 같은 정렬 방법 을 사용 합 니 다.
(a, a, b - > 4, 2, 5) 하지만 나중에 array multiort 는 이 두 가 지 를 서열 2 와 4 로 바 꿀 수 있 습 니 다.
최종 결과: a, a, b - > 2, 4, 5
질문
미리 정 의 된 순서 로 정렬 하려 면 다음 과 같은 동작 을 수행 할 수 있 습 니 다.
1.) 주문 서 를 정의 하 는 것 은 $order = array ("a", "z", "b" 입 니 다.
2.) 사용자 함수 로 usort 호출 하기
3.) sort 함수 에서 areray friep 와 assoc access 를 사용 하여 실제 위 치 를 가 져 옵 니 다:
$items = array("a","b","z","a","z","z"); uasort($items, "sortByPredefinedOrder"); function sortByPredefinedOrder($leftItem, $rightItem){ $order = array("a","z","b","x"); //defined somewhere $flipped = array_flip($order); //so we can access "position by value" $leftPos = $flipped[$leftItem]; $rightPos = $flipped[$rightItem]; return $leftPos >= $rightPos; } print_r($items); //Array ( [0] => a [3] => a [2] => z [4] => z [5] => z [1] => b )
다 차원 입력 에 사용 가능
$leftPos = $flipped[$leftItem["volume"]]; $rightPos = $flipped[$rightItem["volume"]];
근 데 오 피 스 텔 은미리 정 의 된 순서 배열 의 값 을 예측 하고, index Outbound Exception 을 사용 할 것 입 니 다.
'개발 스크랩 메모 > PHP' 카테고리의 다른 글
php 로 문자열 의 모든 url 가 져 오기 (0) | 2020.11.29 |
---|---|
MSQLSrv 와 PHP 5.4.7 을 사용 하여 MSSSQL 에 연결 하 는 중 오류 가 발생 했 습 니 다. (0) | 2020.11.29 |
onClick HTML 이벤트 후 PHP 함 수 를 호출 합 니 다. (0) | 2020.11.29 |
PHP 에서 시간 스탬프 를 포맷 하 는 방법 은? (0) | 2020.11.29 |
php 인쇄 정교 표 (0) | 2020.11.29 |