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


91

我一直在尝试将项目推到这样的关联数组中:

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

但是,不是在“名称”中输入数字。还有另一种方法吗?


无法将一个阵列推入另一个阵列。我已经尝试了所有这些选项,并且合并仅添加了数组。我通过课堂解决了我的问题。
Alex Benincasa Santos,

Answers:



62

代替array_push(),使用array_merge()

它将合并两个数组并将它们的项合并到一个数组中。

示例代码-

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

$final_array=array_merge($existing_array, $new_array);

它在final_array中返回结果数组。结果数组的结果将是-

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

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


1
实际上它应该是$ existing_array = array('a'=>'b','b'=>'c'); $ new_array = array('d'=>'e','f'=>'g'); $ result = array_merge($ existing_array,$ new_array);
Calvin Chan

1
收集输出是常识。我只是在说这个主意。问候
Murtaza Khursheed Hussain 2013年


7

WebbieDave的解决方案将起作用。如果您不想覆盖任何已经在“名称”处出现的内容,也可以执行以下操作:

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


如果您不想保持所有关联,例如在不插入其他带编号的数组的情况下,这将不起作用。看看下面的@Steven H
brianlmerritt

4

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

3

柯蒂斯的答案非常接近我所需要的,但是我做了一点修改。

他在哪里使用:

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

谢谢!


2

只需更改一些代码段(使用array_merge函数):-

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

2

我用 php5.6

代码

$person = ["name"=>"mohammed", "age"=>30];

$person['addr'] = "Sudan";

print_r($person) 

输出

Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )


1

有一个更好的方法可以做到这一点:

如果数组$ arr_options包含现有数组。

$arr_new_input['name'] = [
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
];

$arr_options += $arr_new_input;

警告:$ arr_options必须存在。如果$ arr_options已经有一个['name'],它将被覆盖。

希望这可以帮助。



0

您可以使用array_merge($ array1,$ array2)合并关联数组。例:

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

输出:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.