Chciałbym zbudować tablicę wielowymiarową z tablicy. Na przykład chciałbymZbuduj wielowymiarową tablicę z tablicy w PHP
$test = array (
0 => 'Tree',
1 => 'Trunk',
2 => 'Branch',
3 => 'Limb',
4 => 'Apple',
5 => 'Seed'
);
stać
$test =
array (
'Tree' => array (
'Trunk' => array (
'Branch' => array (
'Limb' => array (
'Apple' => array (
'Seed' => array()
)
)
)
)
)
);
lub prościej
$result[Tree][Trunk][Branch][Limb][Apple][Seed] = null;
Próbuję to zrobić z funkcji rekurencyjnej, ale jestem uderzanie limit pamięci tak Wyraźnie robię to źle.
<?php
$test = array (
0 => 'Tree',
1 => 'Trunk',
2 => 'Branch',
3 => 'Limb',
4 => 'Apple',
5 => 'Seed'
);
print_r($test);
print "results of function";
print_r(buildArray($test));
function buildArray (&$array, &$build = null)
{
if (count($array) > 0)
{
//create an array, pass the array to itself removing the first value
$temp = array_values($array);
unset ($temp[0]);
$build[$array[0]] = $temp;
buildArray($build,$temp);
return $build;
}
return $build;
}
Jest to dobry przykład, dlaczego rekurencji niekoniecznie jest dobrym pomysłem, większość czasu.Zwykle bardzo łatwo jest oderwać rekursję, a dzięki temu uzyskujesz zazwyczaj szybszy, mniejszy ślad, łatwiejszy do zrozumienia kod. –