在多维数组中分配值

时间:2014-12-14 20:48:42

标签: php multidimensional-array

我有以下功能:

public static function toArray($key, $value) {

    $e = explode('.', $key);

    $return = array();

    for($i = count($e) - 1; $i >=  0; $i--) {

        $return = array($e[$i] => $return);

    }

    return $return;

}

和输出:

Array
(
    [app] => Array
        (
            [shifts] => Array
                (
                    [total] => Array
                        (
                        )

                )

        )

)

期望的输出:

Array
(
    [app] => Array
        (
            [shifts] => Array
                (
                    [total] => 3
                )

        )

)

这里发生的是给出一个字符串,并使用点作为分隔符创建一个多维数组。但是,我希望为最后一个数组分配一个由函数给出的值。这个例子假设字符串输入为:" apps.shifts.total" ,值为3.我试图找到一种优雅的方法来实现这一点进入无用的循环。任何灵感都将非常感激!

1 个答案:

答案 0 :(得分:1)

您的初始化步骤错误。

尝试:

public static function toArray($key, $value) {
    $e = explode('.', $key);
    $return = $value; // MODIFIED HERE
    for($i = count($e) - 1; $i >=  0; $i--) {
        $return = array($e[$i] => $return);
    }
    return $return;
}

你基本上做的是级联到顶部。但是你从一个空数组开始。相反,您可以简单地从值开始并在其周围级联数组。

示例(使用互动php -a):

$ php -a
Interactive mode enabled

php > function toArray($key, $value) {
php {     $e = explode('.', $key);
php {     $return = $value; // MODIFIED HERE
php {     for($i = count($e) - 1; $i >=  0; $i--) {
php {         $return = array($e[$i] => $return);
php {     }
php {     return $return;
php { }
php > var_dump(toArray('apps.shifts.total',3));
array(1) {
  ["apps"]=>
  array(1) {
    ["shifts"]=>
    array(1) {
      ["total"]=>
      int(3)
    }
  }
}