배열 출력 때문에 질문 드립니다.

배열 출력 때문에 질문 드립니다.

QA

배열 출력 때문에 질문 드립니다.

본문

1번        2번        3번

C101    104-1005    TOP
C102    104-1005    TOP
C103    104-1005    TOP
C200    473-1005    BOT

 

탭으로 구분되고 저렇게 한줄씩 아래로 작성되어 있습니다.

 wr_11에 text로 저장되어 있고요

3번 TOP, BOT을 구분하여 출력 하고 싶습니다.

 

예로 TOP 내용은 아래 처럼 출력하고 싶습니다.

 

104-1005    C101, C102, C103   3

 

2번의 항목과 일치하는 1번을 콤마로 구분하여 출력하고 마지막에 1번 전체 점수가 나오게 하고 싶습니다.

 

꼭 필요한 내용이라 도움이 필요합니다.

이것만 해결되면 다 해결 되는데 꼭 좀 도움이 필요합니다. ㅠㅠ

 


<div>
  <div>
    <table>
        <colgroup>
            <col width="25%" />
            <col width="69%" />
            <col width="6%" />
        </colgroup>
        <?php
        $wr = "BPF1    33.042    104.106    180    175_CBL20MR_A    BOTTOM\r\nBPF2    109.72    99.006    0    175_CBL20MR_A    BOTTOM\r\nC1    101.631    10.606    0    102-1005    BOTTOM\r\nC10    122.154    53.062    0    105-1005    BOTTOM\r\nC100    82.486    57.514    90    224-1005    TOP\r\nC105    64.431    27.006    90    104-1005    BOTTOM\r\nC107    87.086    27.014    90    104-1005    TOP\r\nC108    87.486    57.514    90    104-1005    TOP\r\nC109    88.586    27.014    90    104-1005    TOP\r\nC11    17.986    41.214    90    104-1005    TOP\r\nC110    88.986    57.514    90    104-1005    TOP\r\nC111    90.086    27.014    90    104-1005    TOP\r\nC112    91.986    18.614    0    33PF-1005    TOP\r\nC113    92.086    28.814    90    226-1608    TOP\r\nC114    92.986    42.514    0    104-1005    TOP\r\nC115    92.986    39.914    0    106-2012    TOP\r\nC116    92.986    52.014    0    224-1005    TOP\r\nC117    57.031    52.006    0    104-1005    BOTTOM\r\nC102    82.986    43.514    0    224-1005    TOP";
        $wr = $wr."\r\n";
        $s = explode("\n", $wr);
        $tmp = [];
        foreach($s as $v) {
          if($v) {
            $ss = explode("    ", $v);
            $tmp[$ss[4]][] = $ss[0];
            ksort($tmp);
          }
        }
        foreach($tmp as $key => $value) {
        if($key) {
            sort($value);
            $count=substr_count(implode(",", $value), ",")+1;
            echo "<tr><th>".$key."</th><td>".implode(", ", $value)."</td><td ".$count."</td></tr>";
          }
        }
        ?>
    </table>
  </div>
</div>

 

 

그 동안 짜집기한 코드인데 도와주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 1

이건 아무래도 설계를 다시 하시는 게 좋을 듯 싶네요.

 

 

일단 의도하시는 바가 뭔지 정확히 알기가 어려워서 ..
wr_11 에 데이터를 모두 넣어서 구분할려고 생각하시지 말고
별도의 DB를 만들어서 조인하시는 게 좋지 않을까 생각합니다.

wr_11에 들어가는 입력값들이 무얼 의미하고 어떤 형태로 입력을 받는지 알 수가 없으니
뭐라고 정확한 답변을 드리기가 어렵습니다.

회사 장비 bom 파일 입니다.
장비에서 뽑아내면 저런 텍스트 나옵니다.
첫번째 값이 로케이션
2~3번 까지는 좌표값
4번은 부품명
5번은 작업면 입니다.



회사장비 자료를 그누보드에 옴길려고 합니다.
양이 좀 방대 합니다.

제가 원하는 것은 작업면에 부품별로 로케이션을 정리하는 겁니다.


BPF1 33.042 104.106 180 175_CBL20MR_A BOTTOM
BPF2 109.72 99.006 0 175_CBL20MR_A BOTTOM
C1 101.631 10.606 0 102-1005 BOTTOM
C10 122.154 53.062 0 105-1005 BOTTOM
C100 82.486 57.514 90 224-1005 TOP
C102 82.986 43.514 0 224-1005 TOP
C105 64.431 27.006 90 104-1005 BOTTOM
C107 87.086 27.014 90 104-1005 TOP
C108 87.486 57.514 90 104-1005 TOP
C109 88.586 27.014 90 104-1005 TOP
C11 17.986 41.214 90 104-1005 TOP
C110 88.986 57.514 90 104-1005 TOP
C111 90.086 27.014 90 104-1005 TOP
C112 91.986 18.614 0 33PF-1005 TOP
C113 92.086 28.814 90 226-1608 TOP
C114 92.986 42.514 0 104-1005 TOP
C115 92.986 39.914 0 106-2012 TOP
C116 92.986 52.014 0 224-1005 TOP
C117 57.031 52.006 0 104-1005 BOTTOM


이걸 정리하면

[BOTTOM]
부품명 로케이션 수량
102-1005 C1 1
104-1005 C105, C117 2
105-1005 C10 1
175_CBL20MR_A BPF1, BPF2 2


[TOP]
부품명 로케이션 수량
104-1005 C107, C108, C109, C11, C110, C111, C114 7
106-2012 C115 1
224-1005 C100, C102, C116 3
226-1608 C113 1
33PF-1005 C112 1


이렇게 정리 싶습니다.

장비에서 뽑아 낸것들이 파일이 다 저렇게 되어있습니다.

txt로 나오는 자료를 그대로 한줄씩 DB에 입력하셔서 정리하시면 될 듯 합니다.
칼럼은 부품명, 로케이션, 수량, 작업면 뭐 이런식으로 구분하셔서 그에 맞는 값을 한줄씩 입력해 주시면 되지 않을까요?

부품명 로케이션 등등이 들어가는 테이블을 별도로 만드셔서 한줄씩 입력하고 제품정보과 들어있는 테이블과 조인하셔서 이용하시면 되지 않을까요?

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

회원로그인

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