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


How to add a new [key] => [value] pair after a specific Associative Key in an Assoc Array in PHP?

可能重复:
array_splice()用于关联数组
如何将数组值添加到关联数组的中间?

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

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

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

如何将[plum] => 2添加到$fruits,使其出现在[apple]密钥之后但出现在[banana]密钥之前?

谢谢。

您可能需要使用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 ));
   }
?>

如果您的最终目标是基于名称的水果序列号(或其他东西)例如,要找到苹果的序列号,你将使用fruits〔'apple〕,那么数组中某个特定元素的位置并不重要,如果你真的想用自己的方式来做,那么你可以使用arraysplice()函数这是一个很好的教程http://www.ferolen.com/blog/insert-into-add-element-to-array-at-specific-position-php/

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

如果你一直假设密钥有一个自然的顺序,那么有一天你会遇到这样一种情况,即顺序可能与你预期的不一样,并且你的功能会被破坏。