Как создать вложенный массив из массива в PHP

Скажем, у нас есть массив: array(1,2,3,4,...) И я хочу преобразовать его в:

 array( 1=>array( 2=>array( 3=>array( 4=>array() ) ) ) ) 

Может ли кто-нибудь помочь?
благодаря

EDIT Было бы хорошо иметь решение с итерациями.

 $x = count($array) - 1; $temp = array(); for($i = $x; $i >= 0; $i--) { $temp = array($array[$i] => $temp); } 

Ну, попробуйте что-то вроде этого:

 $in = array(1,2,3,4); // Array with incoming params $res = array(); // Array where we will write result $t = &$res; // Link to first level foreach ($in as $k) { // Walk through source array if (empty($t[$k])) { // Check if current level has required key $t[$k] = array(); // If does not, create empty array there $t = &$t[$k]; // And link to it now. So each time it is link to deepest level. } } unset($t); // Drop link to last (most deep) level var_dump($res); die(); с $in = array(1,2,3,4); // Array with incoming params $res = array(); // Array where we will write result $t = &$res; // Link to first level foreach ($in as $k) { // Walk through source array if (empty($t[$k])) { // Check if current level has required key $t[$k] = array(); // If does not, create empty array there $t = &$t[$k]; // And link to it now. So each time it is link to deepest level. } } unset($t); // Drop link to last (most deep) level var_dump($res); die(); 

Вывод:

 array(1) { [1]=> array(1) { [2]=> array(1) { [3]=> array(1) { [4]=> array(0) { } } } } } 

Вы можете просто сделать рекурсивную функцию:

 <?php function nestArray($myArray) { if (empty($myArray)) { return array(); } $firstValue = array_shift($myArray); return array($firstValue => nestArray($myArray)); } ?> 

Я думаю, что синтаксис для многомерного массива, который вы хотите создать, будет выглядеть следующим образом.

 $array = array( 'array1' => array('value' => 'another_value'), 'array2' => array('something', 'something else'), 'array3' => array('value', 'value') ); 

Это то, что вы ищете?