>백엔드 개발 >PHP 튜토리얼 >중첩 배열 구조를 나타내는 문자열을 배열로 변환하는 방법은 무엇입니까?

중첩 배열 구조를 나타내는 문자열을 배열로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 12:12:02396검색

How to Convert a String Representing a Nested Array Structure into an Array?

배열 구조가 있는 문자열을 배열로 변환

문제:

중첩 배열을 나타내는 문자열이 있습니다. 구조이므로 이를 실제 배열로 변환해야 합니다. 예를 들어, 다음 문자열이 주어지면:

Main.Sub.SubOfSub

및 데이터 값:

SuperData

다음과 같은 배열을 생성하려고 합니다:

Array
(
[Main] => Array
    (
        [Sub] => Array
            (
                [SubOfSub] => SuperData
            )
    )
)

해결책:

문자열을 배열로 변환하려면 다음 단계를 사용할 수 있습니다.

  1. 문자열을 키 배열로 분할: 폭발() 함수를 사용하여 점(.) 구분 기호로 문자열을 분할합니다. 이렇게 하면 중첩된 배열 구조에 키 배열이 제공됩니다.
  2. 배열의 루트에 대한 참조 생성: &$target 변수를 사용하여 배열의 루트. 이렇게 하면 키를 반복하면서 배열 구조를 수정할 수 있습니다.
  3. 키를 통해 반복: 키 배열의 키를 반복합니다. 각 키에 대해 해당 키가 배열의 현재 수준에 있는지 확인하세요. 그렇지 않은 경우 해당 키에 대한 새 배열을 만듭니다.
  4. 참조 업데이트: 현재 키에 대한 배열을 만든 후 새 키를 가리키도록 참조를 업데이트합니다. 정렬. 이렇게 하면 중첩 구조 아래로 더 반복할 수 있습니다.
  5. 값 할당: 중첩 구조의 리프 노드에 도달한 후 데이터 값을 최종 키에 할당합니다.

단계를 보여주는 코드 조각은 다음과 같습니다.

<code class="php">$key = "Main.Sub.SubOfSub";
$target = array();
$value = "SuperData";

$path = explode('.', $key);
$root = &amp;$target;

while(count($path) > 1) {
    $branch = array_shift($path);
    if (!isset($root[$branch])) {
        $root[$branch] = array();
    }

    $root = &amp;$root[$branch];
}

$root[$path[0]] = $value;</code>

이 코드 조각은 최종 키에 저장된 데이터 값을 사용하여 원하는 배열 구조를 생성합니다.

위 내용은 중첩 배열 구조를 나타내는 문자열을 배열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.