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

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

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에 입력하셔서 정리하시면 될 듯 합니다.
칼럼은 부품명, 로케이션, 수량, 작업면 뭐 이런식으로 구분하셔서 그에 맞는 값을 한줄씩 입력해 주시면 되지 않을까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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