2016-01-19 4 views
3

У меня возникли трудности с созданием вложенного массива массивом ключей и назначением значения для последнего вложенного элемента.Создание вложенного массива с помощью массива ключей

Например, позволяет $value = 4; и $keys = ['a', 'b', 'c'];

Конечный результат должен быть:

[ 
    'a' => [ 
    'b' => [ 
     'c' => 4 
    ] 
    ] 
] 

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

+2

@AbraCadaver, другой вопрос, вы упоминаете как дубликат является точным дополнитель этого вопроса. Здесь он спросил, как создать вложенный массив из другого формата ввода, там вложенный массив задан как вход. – Gavriel

+0

Dupe был изменен. – AbraCadaver

ответ

5

вам не нужно рекурсии, просто сделать это из справа налево:

$a = $value; 
for ($i = count($keys)-1; $i>=0; $i--) { 
    $a = array($keys[$i] => $a); 
} 

или четный короче версии от @felipsmartins:

$a = $value; 
foreach (array_reverse($keys) as $valueAsKey) $a = [$valueAsKey => $a]; 
+0

Это было слишком просто ... Спасибо @Gavriel – nevermind

+0

Этот выходной массив ( [б] => Массив ( [с] => 4 ) ) –

+1

@Jakir, вы правы, я исправил – Gavriel

1

Вы можете попробовать его.

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

Выход

Array 
(
    [a] => Array 
     (
      [b] => Array 
       (
        [c] => 4 
       ) 

     ) 

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