如何添加新的[key] =>在PHP中的Assoc数组中的特定关联键之后的[value]对?

时间:2012-02-03 15:55:11

标签: php arrays associative-array

  

可能重复:
  array_splice() for associative arrays
  How to add an array value to the middle of an associative array?

如何在PHP中的关联数组中的特定关联键之后添加新的[key] => [value]对?

例如,假设我们有一个名为$fruits的数组:

array {
   [apple] => 1
   [banana] => 3
   [orange] => 4
}

如何将[plum] => 2添加到$fruits,以便它显示在[apple]密钥之后但在[banana]密钥之前?

感谢。

3 个答案:

答案 0 :(得分:3)

您可能需要使用array_splice()将数组切割成两部分,然后使用array_merge()重新创建数组 - 尝试一下我刚刚掀起的这个漂亮的函数。

实时样本:http://codepad.org/gGm5C1od

<?php
   $orig = array(
       "apple" => 1,
       "banana" => 3,
       "orange" => 4,
   );

   $orig = InsertKeyValuePair($orig, "plum", 2, 1);
   var_dump($orig);

   function InsertKeyValuePair($arr, $key, $val, $index){
      $arrayEnd = array_splice($arr, $index);
      $arrayStart = array_splice($arr, 0, $index);   
      return (array_merge($arrayStart, array($key=>$val), $arrayEnd ));
   }

?>

答案 1 :(得分:0)

如果您的最终目标是基于名称的水果序列号(或其他) 例如,要查找苹果的序列号,你将使用水果['apple']然后无论数组中的特定元素存在于何处,如果你真的想以自己的方式去做,那么你可以使用array_splice()函数 这是一个很好的教程 http://www.ferolen.com/blog/insert-into-add-element-to-array-at-specific-position-php/

答案 2 :(得分:0)

假设关联键控数组具有可预测的顺序并不是好的设计。如果您想要强制执行订单,则应在设计中强制执行。例如,按订单号键入数组,然后编写自定义函数以按水果名称检索数据。

如果您继续假设按键具有自然顺序,那么有一天您会遇到订单可能与预期不符的情况,并且您将破坏功能。