将项目推送到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;