【发布时间】:2016-01-01 13:08:05
【问题描述】:
我在另一个网站上遇到了这个问题,在尝试了一个小时后(可能是我周日的大脑)我放弃了。问题是:如果有函数foo:
function foo(){}
函数可以调用为(参数可以是>= 2,其中最后一个总是值,前一个是数组的一部分)。
所以调用函数为:
foo('arg1', 'value');
应该导致:
$array['arg1'] = 'value';
如果它有多个参数,则相同:
foo('arg1', 'argx', 'argz', 'value');
应该产生:
$array['arg1']['argx']['argz'] = 'value';
这是我的sad attempt:
function foo()
{
$items = func_get_args();
$value = array_pop($items);
$array = array_shift($items);
// Construct first element
$array = array($array => array());
foreach ($items as $el) {
insert_last($array, $value);
}
return $array;
}
function insert_last(&$array, $value)
{
$copy = $array;
while (true) {
$keys = array_keys($copy);
$last = $copy[$keys[count($copy)-1]];
var_dump($last);
if (empty($last)) {
$last = $value;
break;
}
$copy = $last;
}
var_dump($array, $copy);
}
很确定可能有一个我目前想不出的更简单的解决方案。谢谢!
【问题讨论】:
标签: php arrays recursion multidimensional-array