["b"=>["c"]]] へ [closed] 質問する">

PHP フラット配列をネストされた ["a", "b", "c"] から ["a" =>["b"=>["c"]]] へ [closed] 質問する

PHP フラット配列をネストされた [["b"=>["c"]]] へ [closed] 質問する">

例のタイトルにあるように、後続の各キーが前の値になるようにネストされたフラットな配列が必要です。

例:

array("I", "need", "this", "to", "be", "nested");
// To:
array("I" => array("need" => array("this" => array("to" => array("be" => array("nested"))))))

ベストアンサー1

可能な実装は次のとおりです。

<?php

function make_nested($array) {
    if (count($array) < 2)
        return $array;
    $key = array_shift($array);
    return array($key => make_nested($array));
}

print_r(make_nested(array("I", "need", "this", "to", "be", "nested")));

再帰が気に入らない場合は、反復バージョンを次に示します。

function make_nested($array) {
    if (!$array)
        return array();
    $result = array(array_pop($array));
    while ($array)
        $result = array(array_pop($array) => $result);
    return $result;
}

おすすめ記事