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

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

QA

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

본문

안녕하세요.

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

 

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

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

 

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

어떤 방법들이 있는지

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

 

 

이 질문에 댓글 쓰기 :

답변 3

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

- 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

배열이 요따위라 감이 잘 안잡히네요....ㅜㅜ

 $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 => '',
    ),
  ),
);

어쨌거나 해당 배열을 기준으로 답합니다.
CFB 값에 값이 없거나, 숫자 아닌 값이 들어간 값도 보이는데 무시합니다.
CFB 기준으로 내림차순 정렬해서 다른 배열에서도 동일한 값 표시는
아래처럼 하면 됩니다.


$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ㅅㄷㄴ
    :
    */
}

+ arsort()
- https://www.php.net/manual/en/function.arsort.php
- http://docs.php.net/manual/kr/function.arsort.php

for loop 이전에 사용할 배열을

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

배열이 요따위라 감이 잘 안잡히네요...ㅜㅜ

$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 => '',
    ),
  ),
); 

$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()

함수를 검토해 보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 69
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT