티스토리 뷰
많이 사용한다. json 정말 많이 사용해요~ 제이슨으로 요즘 프로그램을 거의 만드는 것 같아요.
mysql에 저장할때도 이렇게 하면 데이터 처리가 더 편리한 것 같습니다.
이걸로 모든 데이터의 그룹화 및 기타 활용을 많이 합니다.
// 데이터를 num별로 그룹화
foreach ($rows as $row) {
$num = $row['num'];
if (!isset($dataByNum[$num])) {
$dataByNum[$num] = [
'orderlist' => []
];
}
$dataByNum[$num]['orderlist'] = json_decode($row['orderlist'], true);
}
$updateData = [];
// num별로 데이터 처리
foreach ($dataByNum as $num => $lists) {
$newOrderlist = [];
foreach ($lists['orderlist'] as $item) {
$newItem = $item;
$tempCol14 = isset($item['col14']) ? $item['col14'] : '';
$tempCol15 = isset($item['col15']) ? $item['col15'] : '';
$newItem['col15'] = $tempCol14;
$newItem['col16'] = $tempCol15;
$newOrderlist[] = $newItem;
}
$updateData[$num] = [
'orderlist' => json_encode($newOrderlist, JSON_UNESCAPED_UNICODE)
];
}
이해하기 쉽게 각 단계별로 설명해드리겠습니다.
데이터 조회 후 그룹화
먼저, 데이터베이스에서 조회된 데이터를 num 값에 따라 그룹화하는 과정입니다.
// 데이터를 num별로 그룹화
foreach ($rows as $row) {
$num = $row['num']; // 각 행의 'num' 값을 가져옵니다.
if (!isset($dataByNum[$num])) {
// 'num' 값이 아직 배열에 없다면 새로 추가합니다.
$dataByNum[$num] = [
'orderlist' => []
];
}
// 'orderlist' 컬럼의 JSON 데이터를 디코딩하여 배열로 저장합니다.
$dataByNum[$num]['orderlist'] = json_decode($row['orderlist'], true);
}
$updateData = [];
// num별로 데이터 처리
foreach ($dataByNum as $num => $lists) {
$newOrderlist = [];
foreach ($lists['orderlist'] as $item) {
$newItem = $item; // 현재 아이템을 복사합니다.
$tempCol14 = isset($item['col14']) ? $item['col14'] : ''; // 'col14' 값을 임시 변수에 저장합니다.
$tempCol15 = isset($item['col15']) ? $item['col15'] : ''; // 'col15' 값을 임시 변수에 저장합니다.
$newItem['col15'] = $tempCol14; // 'col15' 값을 'col14' 값으로 변경합니다.
$newItem['col16'] = $tempCol15; // 'col16' 값을 'col15' 값으로 변경합니다.
$newOrderlist[] = $newItem; // 수정된 아이템을 새로운 리스트에 추가합니다.
}
$updateData[$num] = [
'orderlist' => json_encode($newOrderlist, JSON_UNESCAPED_UNICODE) // 새로운 리스트를 JSON 형식으로 변환하여 저장합니다.
];
}
이 부분을 이해하려면:
$rows 배열: 데이터베이스에서 조회된 여러 행의 데이터를 가지고 있습니다.
foreach ($rows as $row): 각 행을 $row 변수에 하나씩 저장하며 반복합니다.
$num = $row['num']: 현재 행의 num 값을 $num 변수에 저장합니다.
if (!isset($dataByNum[$num])): num 값을 키로 하는 배열이 아직 존재하지 않으면 새로 만듭니다.
$dataByNum[$num]['orderlist'] = json_decode($row['orderlist'], true);: orderlist 컬럼의 JSON 형식 데이터를 배열로 변환하여 저장합니다.
데이터 처리 및 수정
다음으로, 그룹화된 데이터를 처리하여 col14 값을 col15로, col15 값을 col16으로 이동시키는 과정입니다.
$updateData = [];
// num별로 데이터 처리
foreach ($dataByNum as $num => $lists) {
$newOrderlist = [];
foreach ($lists['orderlist'] as $item) {
$newItem = $item; // 현재 아이템을 복사합니다.
$tempCol14 = isset($item['col14']) ? $item['col14'] : ''; // 'col14' 값을 임시 변수에 저장합니다.
$tempCol15 = isset($item['col15']) ? $item['col15'] : ''; // 'col15' 값을 임시 변수에 저장합니다.
$newItem['col15'] = $tempCol14; // 'col15' 값을 'col14' 값으로 변경합니다.
$newItem['col16'] = $tempCol15; // 'col16' 값을 'col15' 값으로 변경합니다.
$newOrderlist[] = $newItem; // 수정된 아이템을 새로운 리스트에 추가합니다.
}
$updateData[$num] = [
'orderlist' => json_encode($newOrderlist, JSON_UNESCAPED_UNICODE) // 새로운 리스트를 JSON 형식으로 변환하여 저장합니다.
];
}
이 부분을 이해하려면:
$updateData 배열: 업데이트할 데이터를 저장할 배열입니다.
foreach ($dataByNum as $num => $lists): 각 num 그룹에 대해 반복합니다.
$newOrderlist 배열: 새로운 orderlist 데이터를 저장할 배열입니다.
foreach ($lists['orderlist'] as $item): 각 orderlist 아이템에 대해 반복합니다.
$newItem = $item: 현재 아이템을 새로운 변수에 복사합니다.
$tempCol14, $tempCol15: 각각 col14와 col15 값을 임시로 저장합니다.
$newItem['col15'] = $tempCol14: col15 값을 col14 값으로 변경합니다.
$newItem['col16'] = $tempCol15: col16 값을 col15 값으로 변경합니다.
$newOrderlist[] = $newItem: 수정된 아이템을 새로운 리스트에 추가합니다.
$updateData[$num] = ['orderlist' => json_encode($newOrderlist, JSON_UNESCAPED_UNICODE)]: 새로운 리스트를 JSON 형식으로 변환하여 updateData 배열에 저장합니다.
이 과정을 통해 orderlist의 col14 값이 col15로, col15 값이 col16으로 이동된 새로운 데이터가 준비됩니다. 준비된 데이터를 이후 데이터베이스에 업데이트합니다.
'IT tech Coding > php' 카테고리의 다른 글
PHP에서 정확한 다음 달을 계산하는 방법: strtotime 함수의 함정과 해결 방법 (0) | 2024.08.30 |
---|---|
$promiseday = $promiseday == '0000-00-00' || empty($promiseday) ? '' : $promiseday; // 한줄 조건문 php 기억하자.. (0) | 2024.08.27 |
대한민국 국세청의 세금계산서를 발행하는 api 가입하고, 세금계산서 발행을 웹에서 실행하도록 만들려면? (0) | 2024.07.24 |
팝빌(Popbill) vs 이지웰(ezWell), 어느 것이 더 편리할까? ft. GPT (0) | 2024.07.18 |
php 페이지의 오류를 전체 드러내는 코드는? (0) | 2024.06.28 |
- Total
- Today
- Yesterday
- 뫄프로그래밍
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- sql문장 날짜계산
- 오블완
- General error: 2031
- chatGPT3.5파이썬버전
- 티스토리챌린지
- 엑셀보호
- isset을 적용해야 하는 이유
- #InstallForge
- #프로그램설치
- ajax오류메시지
- 오토핫키가이드
- json파일형태보기
- 엑셀입력보호
- 프로그래머생활
- 효율적코딩방법
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- Bootstrap 5
- 캐드자동작도
- 엑셀셀보호
- 코딩튜토리얼
- 파이썬코드줄바꿈방법
- 코딩효율성
- 테크에능한여성
- 스크립트작성기초
- #파이썬패키징
- json파일편하게보는법
- 구글드라이브API
- 도면자동생성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |