IT

json_encode()를 사용하여 PHP 어레이에서 JSON 어레이로.

itgroup 2022. 10. 30. 21:36
반응형

json_encode()를 사용하여 PHP 어레이에서 JSON 어레이로.

내장 어레이를 사용하여 작성한 어레이를 인코딩했습니다.json_encode();기능.다음과 같은 배열 형식으로 필요합니다.

[["Afghanistan",32,12],["Albania",32,12]]

단, 다음과 같이 반환됩니다.

{"2":["Afghanistan",32,12],"4":["Albania",32,12]}

Regex 속임수를 사용하지 않고 이러한 행 번호를 삭제하려면 어떻게 해야 합니다.

PHP 배열의 배열 키가 연속된 번호가 아닌 경우json_encode() 는 JavaScript 배열은 항상 연속적으로 수치적으로 색인화되므로 다른 구성을 개체로 만들어야 합니다.

PHP의 외부 구조에서 사용하여 원래 배열 키를 폐기하고 0 기반 연속 번호로 대체합니다.

예:

// Non-consecutive 3number keys are OK for PHP
// but not for a JavaScript array
$array = array(
  2 => array("Afghanistan", 32, 13),
  4 => array("Albania", 32, 12)
);

// array_values() removes the original keys and replaces
// with plain consecutive numbers
$out = array_values($array);
json_encode($out);
// [["Afghanistan", 32, 13], ["Albania", 32, 12]]

json_encode() 함수는 php에서 배열을 JSON으로 인코딩하는 데 도움이 됩니다.

특정 옵션 없이 json_displays 함수만 직접 사용하는 경우 어레이가 반환됩니다.위의 질문처럼

$array = array(
  2 => array("Afghanistan",32,13),
  4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]

어레이를 JSON으로 변환하려고 하기 때문에 다음과 같이 json_encode의 추가 옵션(파라미터)으로 JSON_FORCE_OBJECT를 사용하는 것이 좋습니다.

<?php
$array=['apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"} 
?>

마이클 버코스키의 답변에 덧붙이고 싶습니다만, 어레이의 순서가 반대로 되어도, 이 경우는 json 오브젝트에서는 순서가 오름차순으로 되어 있기 때문에, 이 문제를 관찰하는 것이 조금 곤란합니다.

예를 들어 다음과 같습니다.

[
    3 => 'a',
    2 => 'b',
    1 => 'c',
    0 => 'd'
]

반환:

{
    0: 'd',
    1: 'c',
    2: 'b',
    3: 'a'
}

그래서 이 경우의 해결방법은array_reversejson으로 인코딩하기 전에

PHP 어레이를 JSON으로 변환할 때 악센트 문자가 문제가 있었습니다.UTF-8을 여러 곳에 배치했지만 PHP에 이 코드를 추가할 때까지 아무 것도 문제를 해결하지 못했습니다.어레이를 푸쉬하고 있는 동안 루프에 이 코드를 PHP에 추가했습니다.

$es_words[] = array(utf8_encode("$word"),"$alpha","$audio");

문제는 '$word' 변수뿐이었습니다.그 후, jason_encode는 문제없이 실행되었습니다.

도움이 되었으면 좋겠다

언급URL : https://stackoverflow.com/questions/11722059/php-array-to-json-array-using-json-encode

반응형