채택완료

php for 문으로 만들어진 테이블 정렬 방법

안녕하세요.

php for 문으로 만들어진 table중 특정 열의 값들을 기준으로 내림차순 정렬을 하고 싶습니다.

 

javascript 로 sortable이 먹혀서 클릭시 테이블 순서 바꾸는 것도 가능은 한 스크립트인데요...

javascript를 이용해 재정렬이 가능하지 않을까 싶습니다...

 

버튼 같은거 누르지 않고 바로 숫자로 된 열을 기준으로 큰 숫자 부터 차례대로 정리되어 보여졌으면 좋겠습니다.

어떤 방법들이 있는지

고수님들 많은 도움 부탁드립니다.

 

 

답변 3개 / 댓글 8개

채택된 답변
+20 포인트

자바스크립트로 처리하는 방법입니다.

- https://www.cssscript.com/tag/table-sort/

 

+ array_multisort() - 다차원 정렬은 이 함수가 유용합니다. 3번째 예제 참고!

- https://www.php.net/manual/en/function.array-multisort

- http://docs.php.net/manual/kr/function.array-multisort.php

답변에 대한 댓글 3개

배열이 요따위라 감이 잘 안잡히네요....ㅜㅜ
[code] $data=array (
'd' =>
array (
'img' =>
array (
0 => 'testest',
1 => 'testestsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'link' =>
array (
0 => 'testets',
1 => 'testsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'member' =>
array (
0 => 'testests',
1 => 'test',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'CFB' =>
array (
0 => '500000',
1 => '60000000',
2 => '',
3 => '2ㅅㄷㄴ',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
),
);[/code]
어쨌거나 해당 배열을 기준으로 답합니다.
CFB 값에 값이 없거나, 숫자 아닌 값이 들어간 값도 보이는데 무시합니다.
CFB 기준으로 내림차순 정렬해서 다른 배열에서도 동일한 값 표시는
아래처럼 하면 됩니다.

[code]
$data=array (
'd' =>
array (
'img' =>
array (
0 => 'testest',
1 => 'testestsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'link' =>
array (
0 => 'testets',
1 => 'testsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'member' =>
array (
0 => 'testests',
1 => 'test',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'CFB' =>
array (
0 => '500000',
1 => '60000000',
2 => '',
3 => '2ㅅㄷㄴ',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
),
);

arsort($data['d']['CFB']); // 역순 정렬, 키 유지

foreach ( $data['d']['CFB'] as $key=>$CFB ) {
$img = $data['d']['img'][$key];
$link = $data['d']['link'][$key];
$member = $data['d']['member'][$key];
// $CFB
/* 출력
testestsets, testsets, test, 60000000
testest, testets, testests, 500000
test, test, test, 2ㅅㄷㄴ
:
*/
}
[/code]
+ arsort()
- https://www.php.net/manual/en/function.arsort.php
- http://docs.php.net/manual/kr/function.arsort.php
https://www.cssscript.com/tag/table-sort/

테이블 2개를 배열로 불러와서 뿌려주고 정렬하는 부분에서 울고있었는데 ㅠㅠ
자바스크립트로 처리하는 방법의 답변이 도움되었습니다! 감사합니다!!

$d= array(

0=>array( 'img'=>'...', 'link'=>'...', 'member'=>'....', 'CFB'=>'...'),

1=>array( 'img'=>'...', 'link'=>'...', 'member'=>'....', 'CFB'=>'...'),

2=>array( 'img'=>'...', 'link'=>'...', 'member'=>'....', 'CFB'=>'...'),

);

이런 식으로 배열이 되어 있어야 하는데....

 

https://www.php.net/manual/en/function.array-multisort.php

array_multisort()

함수를 검토해 보세요.

for loop 이전에 사용할 배열을

php sort() 한번 해 주시면 될 텐데요.

답변에 대한 댓글 5개

배열이 다차원 배열이라서 그 열에서만 먹고 다른 열은 그대로 고정이더라구요;;
https://www.php.net/manual/en/function.usort.php
usort()를 사용하시면 됩니다.
배열이 요따위라 감이 잘 안잡히네요...ㅜㅜ

[code]$data=array (
'd' =>
array (
'img' =>
array (
0 => 'testest',
1 => 'testestsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'link' =>
array (
0 => 'testets',
1 => 'testsets',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'member' =>
array (
0 => 'testests',
1 => 'test',
2 => '',
3 => 'test',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
'CFB' =>
array (
0 => '500000',
1 => '60000000',
2 => '',
3 => '2ㅅㄷㄴ',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
),
),
); [/code]
정렬 기준이 어떤 항목인가요?
CFB 숫자로 되어 있는 항목을 기준으로 순서를 정리하고 싶습니다!! 알려주신 링크 보고 차근차근 해보고 있는데, 안되던지 CFB열만 적용되고 나머지는 움직일 생각을 하지 않네요ㅜㅜ

답변을 작성하려면 로그인이 필요합니다.

🐛 버그신고