PHP положить массивы в массивах - PullRequest
3 голосов
/ 07 августа 2011

Я хочу поместить несколько элементов в один массив, вот структура:

$str = 'String';
$a = array('some', 'sub', 'page');

и я хочу перенести элементы в какой-то другой массив, который должен стать:

Array (
   [some] => Array (
      [sub] => Array (
         [page] => String
      )
   )
)

Я не знаю, как именно это объяснить, поэтому надеюсь, что пример покажет вам что-то. Я хочу, чтобы любой новый элемент в первом массиве (a) был помещен в под-массив предыдущего, а последний должен иметь значение из $ str;

$string = 'My Value';
$my_first_array = array('my', 'sub', 'arrays');

Затем какая-то функция для анализа $ my_first_array и передачи его как:

Пример:

ob_start('nl2br');
$my_parsed_sub_array = parse_sub_arrays($my_first_array, $string);
print_r($my_parsed_sub_array);

=== >>>

Array (
   [my] => Array (
      [sub] => Array (
         [arrays] => String
      )
   )
)

1 Ответ

5 голосов
/ 07 августа 2011

[Редактировать] Надеюсь, на этот раз я понял вопрос ...

Если у вас есть строка и массив, подобный этому:

$str = 'test';
$a = array('some', 'sub', 'page');

Вы можете сначала инициализировать полученный массив таким образом, имея дело со специальным случаем последнего элемента:

$arr = array($a[count($a)-1] => $str);

Затем вы можете перебирать каждый элемент массива $a, начиная с конца (и не работая с последним элементом, с которым мы уже имели дело) :

for ($i=count($a) - 2 ; $i>=0 ; $i--) {
    $arr = array($a[$i] => $arr);
}

При этом выгрузка полученного массива:

var_dump($arr);

Должен получить ожидаемый результат:

array
  'some' => 
    array
      'sub' => 
        array
          'page' => string 'test' (length=4)



Старый ответ ниже, прежде чем понять вопрос:

Вы можете объявить свой массив следующим образом:

$arr = array(
    'some' => array(
        'sub' => array(
            'page' => $str, 
        ), 
    ), 
);


Или, используя несколько отдельных шагов (может быть проще, в зависимости от того, как вы строите свои подмассивы, особенно в более сложном случае, чем текущий пример) :

$sub2 = array('page' => $str);
$sub1 = array('sub' => $sub2);
$arr = array('some' => $sub1);
...