php -> json 배열?? 로 만들기

php -> json 배열?? 로 만들기

QA

php -> json 배열?? 로 만들기

본문

안녕하세요. PHP개발 중 처음보는 형태의 배열??의 형태로 json 값을 만들어 요청이 와서 개발 도중 힌트를 얻고자 질문글 올려봅니다.

 

현재 보내고 있는 json 값은 

[{

"id" : "아이디"

"images": [
 {
  "imageUrl" : "이미지 주소"
 }
],
... 중략
}]

입니다. 여기서 images 의 부분을 

 "images": {

    "0": {
         "imageUrl": "이미지 주소"            
     }
},

요런 형태로 보내길 요청주시는데 해당 부분은 배열이 아닌 다른 형태로 보입니다.

요청온 수정 방향으로 값을 만들려면 어떻게 담아야할지 문의드립니다.

이 질문에 댓글 쓰기 :

답변 3

"images": [
 {
  "imageUrl" : "이미지 주소"
 }

==

이 부분에 해당하는 소스를 올려 보세요.

 

요청하는 내용은 json배열 대신

인덱스 번호가 있는 object 형태네요.

엇!! 말씀주신 object 형식이 맞는것 같아요.
배열을 만드는 소스는 아래와 같습니다. 전체적으로 object가 아닌 해당 images 부분만 object로 변환이 가능한가요?


foreach($data AS $key => $re_d)
{
    $review_array[$key]['id'] = $re_d['id'];

    $image = explode(',',$re_d['image']);
    if($image[0]!="")
    {
        for($i=0; $i<count($image); $i++)
        {
            $review_array[$key]['images'][$i]['imageUrl'] = "이미지주소"
            $review_array[$key]['imageOrder'][$i] = (string)($i);
        }
    }
}


출력 예시 :
[{
"id" : "아이디",
"images" : {
  "0" : {
      "imageUrl" : "이미지 주소"
    },
  ...
},
"imageOrder" : ["0"],
...
},
...
]

"images":[{"imageUrl" : "이미지 주소"},{"imageUrl" : "이미지 주소"}] 이런 형태로 나와서

for문안에
$review_array[$key]['images'] = new stdClass(); 를 선언해주고
$review_array[$key]['images']->imageUrl 이형태로 변경하니
"images":{"imageUrl" : "이미지 주소"} 이렇게 마지막 값만 저장되고 배열형태로 저장이 안됩니다.
해당 $review_array[$key]['images']->imageUrl 부분을 배열형태로 저장하려면 어떻게 해야할지 알 수 있을까요?

foreach($data AS $key => $re_d)
{
    $review_array[$key]['id'] = $re_d['id'];

    $image = explode(',',$re_d['image']);
    if($image[0]!="")
    {

  $review_array[$key]['images']= new stdClass;

        for($i=0; $i<count($image); $i++)
        {
            $review_array[$key]['images']->{"$i"}=array( 'imageUrl' => "이미지주소"};
            $review_array[$key]['imageOrder'][$i] = (string)($i);
        }
    }
}

stdClass를 쓰는 것이 정답이네요.

images 라는 배열안에 여러개가 포함될 수 있는 다차원 배열 형태입니다.

 

array 로 보자면, 

 

$images = array(
 '0' => array(

    'imageUrl' => '이미지주소'

  ),

'1' => array(

    'imageUrl' => '이미지주소'

  ),


);

이런식으로 0,1,2,3,4... 

json_encode 값을 디버깅 하면 연속된 숫자 키값에 대해 생략되어 보이지만,
해당 값을 다시 json_decode 디버깅 하면, 키가 확인됩니다.

받는측에서는 decode 해서 처리 할테구요

연속된 숫자일경우는 생략되어서 그런것이고

이 경우라면, 키가 굳이 필요 없을것입니다.

 

$arr = array(
        'images' => array(
              '0' => array(

                'imageUrl' => '이미지주소'

              ),

              '2' => array(

                'imageUrl' => '이미지주소'

              ),
        )

);

와 같이 연속적인게 아닐때는 키가 확인됩니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 145
QA 내용 검색
filter #json ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT