【问题标题】:How to add a new [key] => [value] pair after a specific Associative Key in an Assoc Array in PHP? [duplicate]如何在 PHP 的 Assoc 数组中的特定关联键之后添加新的 [key] => [value] 对? [复制]
【发布时间】:2012-02-26 05:44:23
【问题描述】:

可能重复:
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] 键之前?

谢谢。

【问题讨论】:

  • 在这个例子中,看起来你想按值升序对数组进行排序,保持索引,又名asort。 us.php.net/asort

标签: php arrays associative-array


【解决方案1】:

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

?>

【讨论】:

  • @DaveRandom:很好地理解了那个编辑。谢谢。
  • Sandeepan Nath 的无效编辑:/** * @desc adds an array value to the middle of an associative array * @param Array $arr - array on which to insert * @param string $key - key name to be given to the newly inserted element * @param mixed $val - value for the newly inserted element * @param int $index - at which sequence number? to insert the new array value into the original array $arr */
  • 编辑出了什么问题?请解释@nonnb。可能是句子可以改进...
  • @SandeepanNath 编辑 Q 或 A 应该是诸如格式或语法之类的小事,而不是添加到答案或制作 cmets(使用您自己的答案,或为此添加评论)。但是,由于您的编辑似乎包含了很好的建议,因此丢失您的编辑将是可悲的,因此我将其粘贴在帖子下方。如您所见,Dutchie 回滚了他的答案。
  • 好的,现在清楚了。因此,它以这种方式“无效”。谢谢
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 1970-01-01
      • 2013-03-06
      • 2012-08-31
      • 1970-01-01
      • 2015-01-22
      • 2018-09-17
      • 1970-01-01
      • 2012-10-11
      相关资源
      最近更新 更多