2010-07-03 7 views
2

я получил массив как это:Добавить новые данные в массив в PHP

array('Testing'=>array(
'topic'=>$data['Testing']['topic'], 
'content'=>$data['Testing']'content']) 
      ); 

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

array('Testing'=>array(
'topic'=>$data['Testing']['topic'], 
'content'=>$data['Testing']['content']), 
'new'=>$data['Testing']['new']) 
       ); 

Не могли бы вы помочь мне, пожалуйста?

ответ

7

Точно так же, как вы можете получить доступ к значениям массивов по ключу, вы также можете установить ключ.

<?php 
$array = array('foo' => array('bar' => 'baz')); 
$array['foo']['spam'] = 'eggs'; 
var_export($array); 

Выход:

array (
    'foo' => 
    array (
    'bar' => 'baz', 
    'spam' => 'eggs', 
), 
) 
1
$testing = array(
    'Testing' => array(
     'topic' => 'topic', 
     'content' => 'content' 
    ) 
); 

$newTesting = array(
    'Testing' => array(
     'new' => 'new' 
    ) 
); 

$testing = array_merge_recursive($testing, $newTesting); 

выведет

array (
    'Testing' => array (
    'topic' => 'topic', 
    'content' => 'content', 
    'new' => 'new', 
), 
) 

ПРИМЕЧАНИЕ: если вы хотите заменить что-то, используя этот метод не будет работать. Например, принимая ту же начальную $testing массив, если у вас есть:

$newTesting = array(
    'Testing' => array(
     'content' => 'new content', 
     'new' => 'new' 
    ) 
); 

$testing = array_merge_recursive($testing, $newTesting); 

Тогда выход будет:

array (
    'Testing' => array (
    'topic' => 'topic', 
    'content' => array (
     0 => 'content', 
     1 => 'content-override', 
    ), 
    'new' => 'new', 
), 
) 

Но если это желаемое поведение, то вы его получили!

EDIT: посмотрите здесь, если array_merge_recursive следует заменить вместо добавления новых элементов для того же ключа: http://www.php.net/manual/en/function.array-merge-recursive.php#93905

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