2010-07-08 66 views
63

關聯數組我一直在試圖將項目推到一個關聯數組是這樣的:推項目在PHP

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

然而,不是「名稱」作爲重點增加了許多。還有另一種方法可以做到嗎?

+0

無法將數組推入另一個數組。我試過所有這些選項,合併只是添加了數組。我用一個類解決了我的問題。 – 2017-06-05 23:29:21

回答

80
$options['inputs']['name'] = $new_input['name']; 
+3

有助於解決一些問題+1 – 2016-08-13 16:31:33

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

WebbieDave的解決方案會奏效。如果你不希望覆蓋任何可能已經在「名稱」,你也可以做這樣的事情:

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

+0

如果您不希望保留所有相關內容,例如而不需要推動其他編號的數組。看看@Steven H下面 – brianlmerritt 2017-08-31 09:25:24

3

如果$new_input可能包含不止一個「名」元素越多,你可能要使用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); 
44

代替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') 

請仔細閱讀本link,要注意可能出現的問題。

+0

其實應該是 $ existing_array = array('a'=>'b','b'=>'c'); $ new_array = array('d'=>'e','f'=>'g'); $ result = array_merge($ existing_array,$ new_array); – 2013-08-29 02:21:11

+1

收集輸出是一種常識。我只是在說這個主意。問候 – 2013-08-29 07:44:03

3

柯蒂斯的回答非常接近我所需要的,但我稍微改變了它。

在那裏他用:

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

謝謝!

7

這是一個很酷的功能

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

只需使用

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

Credits & Explanation

2

只要改變幾個片段(使用array_merge功能): -

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

你可以嘗試。

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