Переместить элемент в ассоциативный массив в PHP

Я пытаюсь перетащить элемент в ассоциативный массив следующим образом:

$new_input['name'] = array( 'type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true ); array_push($options['inputs'], $new_input); 

Однако вместо «name» в качестве ключа добавляется число. Есть ли другой способ сделать это?

 $options['inputs']['name'] = $new_input['name']; 

Вместо array_push () используйте array_merge ()

 $existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); array_merge($existing_array, $new_array); 

Он возвращает полученный массив в исходном массиве в этом случае $existing_array .

И результирующий массив будет

 array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g') 

Просмотрите эту ссылку , чтобы узнать о возможных проблемах.

Это крутая функция

 function array_push_assoc($array, $key, $value){ $array[$key] = $value; return $array; } 

Просто используйте

 $myarray = array_push_assoc($myarray, 'h', 'hello'); 

Кредиты и пояснения

Решение WebbieDave будет работать. Если вы не хотите перезаписывать все, что уже может быть в «name», вы также можете сделать что-то вроде этого:

$options['inputs']['name'][] = $new_input['name'];

Если $new_input может содержать больше, чем просто элемент 'name', вы можете использовать array_merge .

 $new_input = array('name'=>array(), 'details'=>array()); $new_input['name'] = array('type'=>'text', 'label'=>'First name'...); $options['inputs'] = array_merge($options['inputs'], $new_input); 

Ответ Кертиса был очень близок к тому, что мне нужно, но я немного изменил его.

Где он использовал:

 $options['inputs']['name'][] = $new_input['name']; 

Я использовал:

 $options[]['inputs']['name'] = $new_input['name']; 

Вот мой фактический код, используя запрос из БД:

 while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; } в while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; } 

Благодаря!

 $new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input; 

Просто измените несколько фрагментов (используйте функцию array_merge): –

  $options['inputs']=array_merge($options['inputs'], $new_input); 

Можешь попробовать.

 $options['inputs'] = $options['inputs'] + $new_input;