티스토리 뷰
많이 사용한다. 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
- Bootstrap 5
- 엑셀보호
- 오토핫키가이드
- #독립실행파일
- #InnoSetup
- 스크립트작성기초
- #NSIS
- 카페24가비아phpinfo수정
- 엑셀입력보호
- General error: 2031
- sql문장 날짜계산
- #파이썬패키징
- 코딩튜토리얼
- #cx_Freeze
- #프로그램설치
- 테크에능한여성
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 뫄프로그래밍
- #소프트웨어배포
- 파이썬코드줄바꿈방법
- 엑셀셀보호
- 코딩효율성
- #파이썬인스톨러
- 효율적코딩방법
- td요소중에 1행과 1열은 제외
- 2분후종료오토핫키
- #InstallForge
- chatGPT3.5파이썬버전
- 프로그래머생활
- .htaccess수정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |