【问题标题】:Push item to associative array in PHP将项目推送到PHP中的关联数组
【发布时间】:2011-03-13 11:18:30
【问题描述】:

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

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

但是,代替“名称”作为键,添加了一个数字。还有其他方法吗?

【问题讨论】:

  • 不可能将一个数组推入另一个数组。我已经尝试了所有这些选项,合并只是添加了数组。我用一个类解决了我的问题。

标签: php arrays


【解决方案1】:
$options['inputs']['name'] = $new_input['name'];

【讨论】:

  • 最简单的解决方案往往是最好的解决方案
【解决方案2】:

使用 array_merge()

代替 array_push()

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

示例代码 -

$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,以了解可能存在的问题。

【讨论】:

  • 其实应该是 $existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $result = array_merge($existing_array, $new_array);
  • 嗯,收集输出是常识。我只是给出这个想法。问候
【解决方案3】:

这是一个很酷的功能

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

随便用

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

Credits & Explanation

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 如果您不想让所有内容保持关联,则此方法不起作用,例如无需在其间推送其他编号的数组。看看下面的@Steven H
    【解决方案5】:

    我使用php5.6

    代码:

    $person = ["name"=>"mohammed", "age"=>30];
    
    $person['addr'] = "Sudan";
    
    print_r($person) 
    

    输出

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        Curtis 的回答与我需要的非常接近,但我稍作改动。

        他使用的地方:

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

        谢谢!

        【讨论】:

          【解决方案8】:

          只需更改几个sn-p(使用array_merge函数):-

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

          【讨论】:

            【解决方案9】:
            $new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true);
            $options['inputs']['name'] = $new_input;
            

            【讨论】:

              【解决方案10】:

              有更好的方法来做到这一点:

              如果数组 $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】:

                你可以试试。

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

                【讨论】:

                  【解决方案12】:

                  您可以使用 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 )
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-05-17
                    • 1970-01-01
                    • 2015-08-11
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多