I've some difficulties creating a nested array by array of keys and assigning a value for the last nested item.
For example, lets $value = 4;
and $keys = ['a', 'b', 'c'];
The final result should be:
[ 'a' => [ 'b' => [ 'c' => 4 ] ] ]
I've tried with a recursion, but without success. Any help would be greatly appreciated.
you don't need recursion, just do it from the right to left:
$a = $value; for ($i = count($keys)-1; $i>=0; $i--) { $a = array($keys[$i] => $a); }
or the even shorter version from @felipsmartins:
$a = $value; foreach (array_reverse($keys) as $valueAsKey) $a = [$valueAsKey => $a];
Your can try it.
$value = 4; $keys = ['a', 'b', 'c']; $a = $value; $i=count($keys)-1; foreach($keys as $key){ $a = array($keys[$i] => $a); $i--; } print_r($a);
Output
Array ( [a] => Array ( [b] => Array ( [c] => 4 ) ) )