我試圖在一個小時內工作一小時(可能是我的星期日大腦),我在另一個網站上遇到了這個問題,我放棄了。現在的問題是:如果有一個功能foo
:將func_get_args連接成多維數組
function foo(){}
的功能可以被稱爲(參數可以是>= 2
,其中最後總是值和先前是陣列的一部分)。
所以調用該函數爲:
foo('arg1', 'value');
應導致:
$array['arg1'] = 'value';
同樣的,如果有超過1個論點:
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);
}
相當肯定有可能是說我不能在此刻想到的簡單的解決方案。謝謝!
偉大的思想!我只需要更新指針,只在最後添加值:'$ arrayPtr [$ element] = $ value;' - >'$ arrayPtr = $ value;'以避免重複的最後一個條目。 –