여러분들 PHP로 개발하실 때 배열 많이 사용하시나요?
저는 정말 많이 사용하는데요~ 배열을 잘 사용한다면 더욱 편하게 개발할 수 있는 것 같아요~
오늘은 배열을 JSON 형식으로 변환하는 함수에 대해서 알아보겠습니다.
다들 JSON이 뭔지 아시죠?
json은 자바스크립트 언어에서 파생되어 자바스크립트의 구문 형식을 따르지만, C, C++, C#, 자바, 펄, 파이썬 등 수많은 프로그램 언어에서 쉽게 사용할 수 있는 독립형 데이터 포맷이라고 합니다.
그냥 쉽게는 배열이랑 비슷한데 쓰는 방법이 좀 다르다!! 그리고 print 하면 문자열로 출력이 된다고 보시면 됩니다~
물론 PHP에서는 사용이 불가능합니다!! json을 php에서 사용하려면 배열로 변환해서 사용해야 합니다.
저는 주로 데이터를 주고받거나 jQuery로 ajax를 사용할 때 JSON으로 많이 사용합니다.
JSON은 자바스크립트에서 배열처럼 사용이 가능하거든요~~~
{a:{b:"c",d:["e","f",0]}}
JSON은 위와 같은 형식으로 되어있습니다.~ 어떻게 생겼는지 아셨다면 이제 하나씩 알아볼게요~
참고로 json_encode, json_decode는 PHP5 버전 이상에서만 사용이 가능합니다.
json_encode
json_encode는 PHP의 배열을 JSON 형식으로 변환해주는 함수입니다.
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
사용법은 정말 별게 없습니다.
그냥 json_encode(배열)... 끝입니다... 옵션이 있긴 하지만 사용을 단 한 번도 안 해봤어요;;;
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
//결과
{"a":1,"b":2,"c":3,"d":4,"e":5}
아주 간단하게 변환이 되죠?
더욱 복잡한 연관 배열도 전혀 무리 없이 JSON으로 변환이 가능해요~
허허허... 너무 허무한가요?? 저도 좀... 허무하네요....
json_decode
json_decode는 json_encode와 반대로 JSON 을 PHP의 배열로 변환해주는 함수입니다.
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
json_decode도 별로 다를 게 없어 보이시죠?
json_decode도 json_decode(json 데이터) 요렇게만 써주면 사용이 가능합니다.
하지만 꼭 알고 계셔야 하는 게 있어요~ 바로 두 번째 옵션 $assoc입니다!!!!
이걸 모르고 계신다면 한참을 헤매실 수도 있어요~~~~
배열로 변환해 준다면서 왜 안돼!!!!!라면서 말이죠....
예제를 통해서 한번 알아보도록 하죠!!
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
// 결과
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
뭔가 감이 오시나요?
$assoc 옵션 값을 안 주고 json_decode($json) 이렇게 사용하면 기본으로 FALSE로 적용이 됩니다.
그럼 변환된 값은 Object 형식으로 변환이 되어 버립니다.
그래서 $arr['a'] 요렇게 아무리 echo를 찍어봐도 아무것도 볼 수 없는 거죠....
여기서 잠깐 팁을 드리자면 Object 형식은 $arr->a 요렇게 호출이 가능하답니다.^^
배열로 변환하고 싶을 때는 예제처럼 json_decode($json, true) 요렇게 뒤에 true 값을 주면 됩니다.
어렵지 않죠?
어렵지는 않지만 함수 자체를 모르고 계신다면 고생하실지도 몰라요~
함수의 이름하고 용도만이라도 알고 계신다면 사용법은 검색하면서 써도 되니까요~~~
'Web > PHP' 카테고리의 다른 글
PHP에서 배열을 문자열로 합치기, 문자열을 배열로 만들기 | explode, implode (2) | 2021.09.07 |
---|---|
[PHP] 원격지 파일 주소 노출 안하고 curl로 다운로드 받기 (4) | 2021.09.03 |
영카트에서 네이버 쇼핑 디비URL, 요약URL 확인하기 | 영카트 5.2.3 이상 (4) | 2021.08.31 |
그누보드만 설치해도 홈페이지가 생긴다?? | WAMP 로컬서버에 그누보드 설치하기 (620) | 2018.07.12 |
PHP 구문이 화면에 그대로 출력될 경우 해결 방법!! (4) | 2018.07.02 |