Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从字符串生成多维数组。_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 如何从字符串生成多维数组。

Php 如何从字符串生成多维数组。,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,具有通用字符串$a并将其分解为点es: $b = explode(".", $a) 如何在不知道计数($b)value的情况下以友好方式运行代码: if (count($b) == 1) { $c[$b[0]] = $var; } elseif (count($b) == 2) { $c[$b[0]][$b[1]] = $var; } elseif (count($b) == 3) { $c[$b[0]][$b[1]][$b[2]] = $var; } ... {

具有通用字符串$a并将其分解为点es:

$b = explode(".", $a)
如何在不知道计数($b)value的情况下以友好方式运行代码:

if (count($b) == 1) {
    $c[$b[0]] = $var;
} elseif (count($b) == 2) {
    $c[$b[0]][$b[1]] = $var;
} elseif (count($b) == 3) {
    $c[$b[0]][$b[1]][$b[2]] = $var;
} ... {
    ...
} elseif (count($b) == n-1) {
    $c[$b[0]][$b[1]][$b[2]]...[$b[n-2]] = $var;
} elseif (count($b) == n) {
     $c[$b[0]][$b[1]][$b[2]]...[$b[n-1]] = $var;
} else {
     $c = $var;
}

当然,这是一个伪代码,可以让你们了解我的意思。

你们有两种解决方案:

递归函数 第一种是使用递归函数,该函数将在数组中添加每个新元素

评价方法 另一种方法,很快。。。但是它使用了一个评估功能。我不是这样的电影迷。当您知道脚本的所有方面都会产生影响时,可以使用它


您有两种解决方案:

递归函数 第一种是使用递归函数,该函数将在数组中添加每个新元素

评价方法 另一种方法,很快。。。但是它使用了一个评估功能。我不是这样的电影迷。当您知道脚本的所有方面都会产生影响时,可以使用它


不使用
eval()和递归的解决方案:

function split_to_multi($string, $value)
{
    $levels = explode('.', $string);
    $result = [];
    foreach (array_reverse($levels) as $key) {
        $result = [$key => $value];
        $value = $result;
    }

    return $result;
}
例如:

print_r(split_to_multi('foo.bar.baz', 123)); 
将输出:

Array
(
    [foo] => Array
        (
            [bar] => Array
                (
                    [baz] => 123
                )

        )

)

不使用
eval()和递归的解决方案:

function split_to_multi($string, $value)
{
    $levels = explode('.', $string);
    $result = [];
    foreach (array_reverse($levels) as $key) {
        $result = [$key => $value];
        $value = $result;
    }

    return $result;
}
例如:

print_r(split_to_multi('foo.bar.baz', 123)); 
将输出:

Array
(
    [foo] => Array
        (
            [bar] => Array
                (
                    [baz] => 123
                )

        )

)

您能添加一个示例字符串和预期输出吗?您是否亲自尝试过任何东西,或者您是否要求我们为您完成所有工作?您能否发布
$a
string您能否添加一个示例字符串和预期输出?你自己真的试过什么吗,或者你是在要求我们为你做所有的工作吗?你能发布
$a
字符串吗