使用动态数组创建键数组

时间:2018-02-13 10:38:03

标签: php arrays

例如,用户给我一个这样的数组:

$input = ['countries', 'cities', 'towns'];

我想创建一个这样的数组,我知道正确的是:

$output["countries"]["cities"]["towns"] = "Downtown";

另一个例子:

$input = ['cities', '0'];

$output["cities"][0] = "Nice";

我想使用给我的键作为键来创建键/值数组。

我不知道给我的阵列的长度。

1 个答案:

答案 0 :(得分:1)

您可以在循环中保存最后一个数组的引用:

$input = ['countries', 'cities', 'towns'];
$output = [];
$ref = &$output;
foreach ($input as $value) {
    $ref[$value] = [];
    $ref = &$ref[$value];
}
$ref="Downtown";
print_r($output);

输出:

Array
(
    [countries] => Array
        (
            [cities] => Array
                (
                    [towns] => Downtown
                )
        )
)

你的第二个例子:

$input = ['cities', '0'];
$output = [];
$ref = &$output;
foreach ($input as $value) {
    $ref[$value] = [];
    $ref = &$ref[$value];
}
$ref="Nice";
print_r($output);

输出:

Array
(
    [cities] => Array
        (
            [0] => Nice
        )

)