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

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

QA

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

답변 3

본문

안녕하세요.

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

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

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

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

CFB 숫자로 되어 있는 항목을 기준으로 순서를 정리하고 싶습니다!! 알려주신 링크 보고 차근차근 해보고 있는데, 안되던지 CFB열만 적용되고 나머지는 움직일 생각을 하지 않네요ㅜㅜ

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

함수를 검토해 보세요.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로