入れ子になった配列構造を表す文字列を配列に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-01 12:12:02
オリジナル
305 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!