ホームページ >バックエンド開発 >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. 文字列をキーの配列に分割します:explode() 関数を使用して、文字列をドット (.) 区切り文字で分割します。これにより、ネストされた配列構造内のキーの配列が得られます。
  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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。