ホームページ >バックエンド開発 >PHPチュートリアル >PHP でドット構文文字列を多次元配列に再帰的に変換するにはどうすればよいですか?

PHP でドット構文文字列を多次元配列に再帰的に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 05:28:17633ブラウズ

How Can I Recursively Convert Dot Syntax Strings to Multidimensional Arrays in PHP?

PHP でドット構文から多次元配列を作成する方法

PHP でドット構文を変換する (「this.that.other」など) ) を多次元配列に変換することは、データを整理するのに役立つタスクです。この変換を実行する方法は次のとおりです:

再帰関数の使用:

次の関数 assignArrayByPath() は、ドット構文を再帰的にナビゲートして多次元配列を作成できます:

function assignArrayByPath(&$arr, $path, $value, $separator='.') {
    $keys = explode($separator, $path);

    foreach ($keys as $key) {
        $arr = &$arr[$key];
    }

    $arr = $value;
}

どうやってworks:

  1. この関数は 4 つのパラメータを取ります:

    • $arr: 変更する多次元配列。
    • $path: ドット構文目的のキー構造を表すパス。
    • $value: 最終キー構造に割り当てる値。 key.
    • $separator: (オプション) ドット構文で使用される区切り文字 (デフォルトは .)
  2. explode() 関数はパスを個々のキーに分割します。
  3. 関数は各キーを反復処理し、参照を使用して配列内の適切な要素を変更します。 $arr.
  4. キーが存在しない場合は、キーが作成され、$arr 参照に割り当てられます。
  5. 最後に、$value が配列内の最後のキーに割り当てられます。

例:

ドット構文「s1.t1.column.1」を次のように変換するには多次元配列の場合は、次のコードを使用します。

$source = [];
assignArrayByPath($source, 's1.t1.column.1', 'size:33%');

echo $source['s1']['t1']['column']['1']; // Outputs: 'size:33%'

このアプローチは、PHP で複雑なドット構文を多次元配列に変換するための柔軟で再帰的な方法を提供し、存在しないキーであっても自動的に作成されるようにします。これは、ネストされたデータ構造を構造化配列形式に解析する場合に特に役立ちます。

以上がPHP でドット構文文字列を多次元配列に再帰的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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