TIP게시판

제목 curl 2차원 배열 전송
글쓴이 로하나스 작성시각 2017/04/20 11:24:07
댓글 : 3 추천 : 0 스크랩 : 1 조회수 : 16851   RSS

안녕하세요! 

혹시나 curl 통신으로 2차원 배열 전송으로 고민할 분이 있을까해서 글을 남깁니다.

 

보통 1차원 배열은 그냥저냥 잘 전달이 됩니다.

하지만 2차원 배열을 넘길시 2차원 쪽은 Array만 찍히는데요.

$set = array('test'=>'Y','aaaa'=>'1234','asdf'=>array('a'=>'\'asssdf\'','b'=>'23'));
$post_data = array('data' => serialize($set));
$url = "http://api.test.com/shop/set_shop/";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url );
curl_setopt($curl, CURLOPT_POST,0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_TIMEOUT,20);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$json = curl_exec($curl); // 실행
curl_close($curl);
$data=json_decode($json,true);

이렇게 넘길때 serialize로 감싸구요

 

받을때도 중요합니다.

받는곳에서 단순하게 unserialize만 하면 안되구요!

$data = unserialize(stripslashes($_REQUEST['data'])); 이렇게 stripslashes 을 적어주고 하니 

Array
(
    [test] => Y
    [aaaa] => 1234
    [asdf] => Array
        (
            [a] => 'asssdf'
            [b] => 23
        )

)

2차원 배열도 정상적으로 넘어오네요!

이상입니다.

-------------------------

//to safely serialize
$safe_string_to_store = base64_encode(serialize($multidimensional_array));

//to unserialize...
$array_restored_from_db = unserialize(base64_decode($encoded_serialized_string));

추가 검색하니 위 방법도 잘되네요! 

태그 curl
 다음글 HTML 프린터 출력시 페이지 나눔 (2)
 이전글 형태소 검색기 (7)

댓글

kaido / 2017/04/20 11:33:35 / 추천 0

좋은정보 감사합니다 ㅎㅎ

참고로 serialize 화 시키면 js 에서 배열을 만들어서 보내줄때도 유용합니다. 

변종원(웅파) / 2017/04/20 12:39:34 / 추천 1
json 포맷 나오기전에 유용하게 썼던 방법이죠. ^^
한대승(불의회상) / 2017/04/20 13:31:24 / 추천 0
좋은 정보 감사합니다. ^^