아래와 같은 $originArr 배열이 있을때 BB output 처럼 하고 싶을 경우가 많습니다.
for문과 foreach 문으로 반복하면서 문자열 처리를 할수 있습니다만
고차원 함수인 array_map 과 array_reduce 를 이용하여 반복처리 하는 방법을 보여드립니다.
$originArr
[0] => Array
(
[isu_cd] => A094190
[kor_cor_nm] => 이엘케이
[chg_dt] => 2020/05/22
[tr_stp_rsn] => 감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)
)
[1] => Array
(
[isu_cd] => A900040
[kor_cor_nm] => 차이나그레이트
[chg_dt] => 2020/05/22
[tr_stp_rsn] => 법정제출기한까지 사업보고서를 제출하지 아니한 후, 법정제출기한의 다음날부터 10일이내에 사업보고서를 제출하지 아니함
)
[2] => Array
(
[isu_cd] => A030270
[kor_cor_nm] => 에스마크
[chg_dt] => 2020/05/21
[tr_stp_rsn] => 감사의견거절(감사범위제한 및 계속기업 존속 불확실)
)
[3] => Array
(
[isu_cd] => A054340
[kor_cor_nm] => 피앤텔
[chg_dt] => 2020/05/21
[tr_stp_rsn] => 감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)
)
[4] => Array
(
[isu_cd] => A197210
[kor_cor_nm] => 리드
[chg_dt] => 2020/05/14
[tr_stp_rsn] => 기업의 계속성 및 경영의 투명성 등을 종합적으로 고려하여 상장폐지기준에 해당한다고 결정
)
BB output
,"A094190","이엘케이","2020/05/22","감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)"
,"A900040","차이나그레이트","2020/05/22","법정제출기한까지 사업보고서를 제출하지 아니한 후, 법정제출기한의 다음날부터 10일이내에 사업보고서를 제출하지 아니함 "
,"A030270","에스마크","2020/05/21","감사의견거절(감사범위제한 및 계속기업 존속 불확실)"
,"A054340","피앤텔","2020/05/21","감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)"
,"A197210","리드","2020/05/14","기업의 계속성 및 경영의 투명성 등을 종합적으로 고려하여 상장폐지기준에 해당한다고 결정"
전체 코드를 보면 아래와 같습니다.
$res = array_map(
function ($arr) {
return array_reduce(
$arr,
function ($v1, $v2) {
return "$v1,\"$v2\"";
}
);
},
$originArr
);
$output = implode("\n",$res);
echo '<pre>';
print_r($output);
exit;
. array_reduce 란 무엇인가?
검색 많이 해보면 아시겠지만 숫자 더하는 부분이 많이 나옵니다.
여기서는 더하기가 아닌 문자열 합치는 방법을 보여드립니다.
아래와 같은 배열이 있습니다.
$tmpArr
[isu_cd] => A094190
[kor_cor_nm] => 이엘케이
[chg_dt] => 2020/05/22
[tr_stp_rsn] => 감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)
$res = array_reduce(
$tmpArr,
function ($v1, $v2) {
return "$v1,$v2";
}
);
print_r($res);
exit;
array_reduce 를 이용하면 결과값은 아래와 같이 나오게 됩니다.
반복하면서 $v1 과 $v2를 , 로 연결해주는 역할을 하죠
,A094190,이엘케이,2020/05/22,감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)
그렇다면 원래배열 $originArr 을 array_map 으로 반복하면서 array_reduce를 실행하면 되겠죠
아래와 같이 말이죠.
$res = array_map(
function ($arr) {
return array_reduce(
$arr,
function ($v1, $v2) {
return "$v1,\"$v2\"";
},
"상장폐지"
);
},
$originArr
);
$output = implode("\n",$res);
echo '<pre>';
print_r($output);
exit;
array_reduce 3번째 인자로 초기값이 들어갑니다.
상장폐지,"A094190","이엘케이","2020/05/22","감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)"
상장폐지,"A900040","차이나그레이트","2020/05/22","법정제출기한까지 사업보고서를 제출하지 아니한 후, 법정제출기한의 다음날부터 10일이내에 사업보고서를 제출하지 아니함 "
상장폐지,"A030270","에스마크","2020/05/21","감사의견거절(감사범위제한 및 계속기업 존속 불확실)"
상장폐지,"A054340","피앤텔","2020/05/21","감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성)"
상장폐지,"A197210","리드","2020/05/14","기업의 계속성 및 경영의 투명성 등을 종합적으로 고려하여 상장폐지기준에 해당한다고 결정"
'프로그래밍 > Php' 카테고리의 다른 글
유머 커뮤니티 크롤링/파싱 시 본문내용이 안나올때 (0) | 2020.07.29 |
---|---|
Template Method pattern (템플릿 메소드 패턴) (0) | 2020.06.01 |
array_walk 를 이용한 배열을 쿼리스트링으로 변경 (0) | 2020.05.28 |
[디자인패턴] php 로 알아보는 Builder pattern (0) | 2020.04.24 |
[디자인패턴] php 로 알아보는 Builder pattern (주식 정보 가져오기, 주식 정보 API만들기- kospi, kosdaq, krx) (0) | 2020.04.23 |