PHP Создание динамических многомерных массивов - PullRequest
1 голос
/ 07 июня 2011

У меня есть следующий массив:

$myArray = array(0=>'Zero',
             1=>'One',
             2=>'Two',
             3=>'Three',
             4=>'Four');

А мне бы хотелось в следующем формате:

$newArray = array('One'=>
                array('Two'=>
                   array('three'=>
                      array('four'=>
                         array('five'=>
                            array())))));

Это могут быть бесконечные уровни, хотя более реалистично около 1-6 уровней глубиной.

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Примерно так должно поступить:

$myArray = array(0=>'Zero',
     1=>'One',
     2=>'Two',
     3=>'Three',
     4=>'Four');

$myRecursiveArray = array();
$l = count($myArray);
for($i = $l; 0 < $i; --$i)
{
    $myRecursiveArray = array($myArray[$i - 1]=> $myRecursiveArray);
}

yes123 имеет более короткий ответ, но оставляет ссылку в вашем массиве. Не может иметь никакого влияния, если это то, что вам нужно.

1 голос
/ 07 июня 2011

Сортировал это сегодня утром, по-видимому, ответ был сон!

вот мое решение

$myNewArray = array();
$myArray = explode('->',"Zero->One->Two->Three");
$myArray = array_reverse($myArray);

foreach($myArray as $key => $value) {
    $myTempArray = $myNewArray;
    unset($myNewArray);
    $myNewArray[$value] = $myTempArray;
}

Спасибо за ответы, комментарии к моему решению приветствуются =)

0 голосов
/ 07 июня 2011
$newArray=array();
$current = &$newArray;
foreach($myArray as $v) {
   $current[$v] = array();
   $current = &$current[$v];
}

Смотрите это в прямом эфире и бесплатно здесь: http://codepad.org/utESnGiv
Недостаточно 4 строки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...