php 배열때문에 궁금해서 질문드립니다..

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
php 배열때문에 궁금해서 질문드립니다..

QA

php 배열때문에 궁금해서 질문드립니다..

본문

원래 제가 자주다루었던 배열 형태는 다음과 같습니다..

 

    $data = array(
        "a1" => "fdfdf",
        'b1' => "fdfdfdf",
        "c1" => "fdfd",
        "d1" => "fdfdfdfd",
        "e1" => array(
          "e11" => "fdfd", 
          "e12" => "fdfd", 
          "e13" => "fdfdfdf", 
          "e14" => "fdfdfdf"
        )
    );

이런 형식을   json_encode 해서 값도 넘기고 그랬는데요..

 

근데 또 다음과 같은 형식으로 해서 json_encode 해서 넘겨야 할것 같아서요..

 

  $postData = ' [
     {
       "a1": "dfdfdfdf",
       "b1": "fdfdfd",
       "c1": "fdfdfdf",
       "d1": "dfdfdfdfd",
       "e1" : [
        { "e11":"fdfdf", 
        "e12":"fdfdfdf", 
        "e13": "fdfdfdf", 
        "e14": "fdfdfdfdf"
       }]
    }
]
';

 

이런 형식으로 배열을 만들려면 어떤 함수를 써야 할지 궁금합니다..

 

답변주시는분들 미리 감사드려요~~

이 질문에 댓글 쓰기 :

답변 3


<?php
// for beginners. 먼저 [ ] = Array, { } = Object 입니다.
// 원하는 결과값을 json_decode() 함수를 이용해 살펴봅니다.
$postData = ' [
     {
       "a1": "dfdfdfdf",
       "b1": "fdfdfd",
       "c1": "fdfdfdf",
       "d1": "dfdfdfdfd",
       "e1" : [
        { "e11":"fdfdf",
        "e12":"fdfdfdf",
        "e13": "fdfdfdf",
        "e14": "fdfdfdfdf"
       }]
    }
]
';
print_r(json_decode($postData)); // json_decode($postData, 1)로 할 경우 모두 배열이 되기 때문에 달라집니다.
/*
Array
(
    [0] => stdClass Object
        (
            [a1] => dfdfdfdf
            [b1] => fdfdfd
            [c1] => fdfdfdf
            [d1] => dfdfdfdfd
            [e1] => Array
                (
                    [0] => stdClass Object
                        (
                            [e11] => fdfdf
                            [e12] => fdfdfdf
                            [e13] => fdfdfdf
                            [e14] => fdfdfdfdf
                        )
                )
        )
)
*/
// 동일한 형태로 값을 직접 할당해봅니다.
$temp = [
    (object)[
        'a1' => 'dfdfdfdf',
        'b1' => 'fdfdfd',
        'c1' => 'fdfdfdf',
        'd1' => 'dfdfdfdfd',
        'e1' => [
            (object)[
                'e11' => 'fdfdf',
                'e12' => 'fdfdfdf',
                'e13' => 'fdfdfdf',
                'e14' => 'fdfdfdfdf',
            ],
        ],
    ]
];
print_r($temp);
/* 위쪽의 json_decode() 값과 동일하죠?
Array
(
    [0] => stdClass Object
        (
            [a1] => dfdfdfdf
            [b1] => fdfdfd
            [c1] => fdfdfdf
            [d1] => dfdfdfdfd
            [e1] => Array
                (
                    [0] => stdClass Object
                        (
                            [e11] => fdfdf
                            [e12] => fdfdfdf
                            [e13] => fdfdfdf
                            [e14] => fdfdfdfdf
                        )
                )
        )
)
*/
// 그대로 json_encode() 처리하면 역시 동일한 값을 얻을 수 있죠?
echo json_encode($temp, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
/*
[
    {
        "a1": "dfdfdfdf",
        "b1": "fdfdfd",
        "c1": "fdfdfdf",
        "d1": "dfdfdfdfd",
        "e1": [
            {
                "e11": "fdfdf",
                "e12": "fdfdfdf",
                "e13": "fdfdfdf",
                "e14": "fdfdfdfdf"
            }
        ]
    }
]
*/

 

이제 처음으로 돌아가서, $data 배열값을 위와 동일한 형태로 가공해주면 됩니다.


<?php
    $data = array( // 질문의 코드 그대로 복사
        "a1" => "fdfdf",
        'b1' => "fdfdfdf",
        "c1" => "fdfd",
        "d1" => "fdfdfdfd",
        "e1" => array(
          "e11" => "fdfd",
          "e12" => "fdfd",
          "e13" => "fdfdfdf",
          "e14" => "fdfdfdf"
        )
    );
$temp = []; // 초기화 - PHP v5.4 미만은 [] → array() // $temp = array();
$temp[0] = (object)$data; // 형변환 후 할당
foreach ( $temp[0] as $key=>$value ) { // 키 반복
    if ( is_array($value) ) { // 값이 배열일 때 실행
        unset($temp[0]->$key); // 해당 키 값을 제거하고,
        $temp[0]->$key[0] = (object)$value; // 형변환해 다시 할당
    }
}
// 최종 결과물
$postData = json_encode($temp, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
/*
[
    {
        "a1": "fdfdf",
        "b1": "fdfdfdf",
        "c1": "fdfd",
        "d1": "fdfdfdfd",
        "e1": [
            {
                "e11": "fdfd",
                "e12": "fdfd",
                "e13": "fdfdfdf",
                "e14": "fdfdfdf"
            }
        ]
    }
]
*/

#아래와 같은 형식으로 배열의 값에 배열을 넣어 주시면 됩니다.

$aDeep1 = array('a','b','c');

$aArray = array('간','나',$aDeep1);

 

이렇게 해도 됩니다.

$aArray['가'] = 'a';

$aArray['나'] = 'b';

$aArray['다'] = array('a','b','c');

 

답변을 작성하시기 전에 로그인 해주세요.
전체 60,206
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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