我有以下功能:
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。我试图找到一种优雅的方法来实现此目的,而无需进入无用的循环。任何灵感将不胜感激!
您的初始化步骤是错误的。
尝试:
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;
}
您基本上要做的是层叠到顶部。但是您从一个空数组开始。取而代之的是,您可以简单地从该值开始并围绕该值层叠数组。
示例(使用Interactive 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)
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句