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

时间:2010-07-08 16:48:20

标签: php arrays

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

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

然而,代替'name'作为键添加一个数字。还有其他办法吗?

13 个答案:

答案 0 :(得分:99)

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

答案 1 :(得分:51)

而不是 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')

请查看此link,了解可能存在的问题。

答案 2 :(得分:11)

这是一个很酷的功能

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

只需使用

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

Credits & Explanation

答案 3 :(得分:7)

WebbieDave的解决方案将起作用。如果您不想覆盖可能已经在'name'的任何内容,您还可以执行以下操作:

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

答案 4 :(得分: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);

答案 5 :(得分: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'];
}

谢谢!

答案 6 :(得分:2)

只需更改几个片段(使用array_merge函数): -

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

答案 7 :(得分:1)

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

答案 8 :(得分:0)

你可以试试。

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

答案 9 :(得分: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 )

答案 10 :(得分:0)

有一种更好的方法:

如果数组$ 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'],它将被覆盖。

希望这会有所帮助。

答案 11 :(得分:0)

我使用php5.6

代码

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

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

print_r($person) 

输出

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

答案 12 :(得分:0)

首先,您需要定义一个数组

 $myArray= array();

然后您可以将任何内容推入数组,在这里我尝试使用关联数组

    array_push( $myArray ,array('id'=>23, 'category'=>'aaa'));

您可以在php中看到更改后的数组:

print_r($myArray);
  

结果:Array([0] => Array([id] => 23 [category] ​​=> aaa))