将项目推送到PHP中的关联数组

我一直在尝试推送一个项目像这样的关联数组:

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

但是,而不是“名称”作为关键添加一个数字。 还有另一种方法吗?

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

请查看此链接 ,了解可能的问题。

WebbieDave的解决scheme将工作。 如果你不想覆盖可能已经在“名称”的任何东西,你也可以做这样的事情:

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

这是一个很酷的function

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

只是使用

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

信用和解释

如果$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']; 

这是我使用来自DB的查询的实际代码:

 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;