2011-08-07 3 views
3

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

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

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

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

Я не знаю, как именно объяснить это, так что надеюсь, что пример показывает вам кое-что. Я хочу, чтобы любой новый элемент в первом массиве (а) был помещен как подматрица из предыдущего, а последний имел значение из $ 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 
    ) 
    ) 
) 

ответ

5

[Edit] I надеюсь, что на этот раз я понял вопрос ...

Если у вас есть строка и массив вроде этого:

$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); 
+0

нет, нет, вы не получите point.I хочет сделать некоторый алгоритм для разбора первого массива (а) в подмассивы и последний из $ а, чтобы значение $ str.I хочу сделать это автоматически с помощью кода, а не вручную. Это сложно, извините, я не могу сказать это лучше. –

+0

Я попытаюсь объяснить это лучше в первом посте, это не так. –

+0

Oh; извините, не совсем понял вопрос :-( –

Смежные вопросы