source

json_encode PHP 어레이를 JSON 개체가 아닌 JSON 어레이로 코드합니다.

lovecheck 2022. 10. 19. 21:11
반응형

json_encode PHP 어레이를 JSON 개체가 아닌 JSON 어레이로 코드합니다.

PHP에는 다음과 같은 어레이가 있습니다.

Array
(
    [0] => Array
        (
            [id] => 0
            [name] => name1
            [short_name] => n1
        )

    [2] => Array
        (
            [id] => 2
            [name] => name2
            [short_name] => n2
        )
)

JSON을 JSON 배열로 인코딩하여 다음과 같은 문자열을 생성합니다.

[  
    {  
        "id":0,
        "name":"name1",
        "short_name":"n1"
    },
    {  
        "id":2,
        "name":"name2",
        "short_name":"n2"
    }
]

그러나 이 어레이를 호출하면 다음과 같은 메시지가 나타납니다.

{  
    "0":{  
        "id":0,
        "name":"name1",
        "short_name":"n1"
    },
    "2":{  
        "id":2,
        "name":"name2",
        "short_name":"n2"
    }
}

배열이 아닌 객체입니다.

어떻게 하면 얻을 수 있나요?json_encode내 어레이를 어레이로 인코딩하는 대신?

RFC 8259 JavaScript Object Notation(JSON; JavaScript 객체 표기법) 데이터 교환 포맷의 어레이를 참조해 주세요.

배열 구조는 0 이상의 값(또는 요소)을 둘러싼 대괄호로 표시됩니다.요소는 쉼표로 구분됩니다.

array = begin-array [value *(value-array value)]end-array

어레이가 순차적이지 않기 때문에 이 동작이 관찰되고 있습니다.0그리고.2, 단,1열쇠로서

숫자 색인만으로는 충분하지 않습니다. json_encodePHP 어레이가 시퀀셜일 경우에만 PHP 어레이를 JSON 어레이로 인코딩합니다.즉, 키가 0, 1, 2, 3, ...인 경우입니다.

함수를 사용하여 어레이를 순차적으로 다시 인덱싱하여 원하는 동작을 가져올 수 있습니다.예를 들어, 아래 코드는 사용 사례에서 정상적으로 작동합니다.

echo json_encode(array_values($input)).

ArrayJSON인덱스 배열만 있으므로 가져오려는 구조는 유효한 Json/Javascript가 아닙니다.

PHP Associates 배열은 JSON의 개체이므로 인덱스가 필요하지 않은 한 이러한 변환을 수행할 수 없습니다.

이러한 구조를 가져오려면 다음을 수행할 수 있습니다.

$indexedOnly = array();

foreach ($associative as $row) {
    $indexedOnly[] = array_values($row);
}

json_encode($indexedOnly);

Will은 다음과 같은 것을 반환합니다.

[
     [0, "name1", "n1"],
     [1, "name2", "n2"],
]

json_twhonondata, true);

true를 지정하면 모든 속성이 배열로 바뀝니다(시퀀셜 여부).

이거 드셔보세요.

<?php
$arr1=array('result1'=>'abcd','result2'=>'efg'); 
$arr2=array('result1'=>'hijk','result2'=>'lmn'); 
$arr3=array($arr1,$arr2); 
print (json_encode($arr3)); 
?>

언급URL : https://stackoverflow.com/questions/11195692/json-encode-php-array-as-json-array-not-json-object

반응형