可能重复:
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]
密钥之前?
感谢。
答案 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)
假设关联键控数组具有可预测的顺序并不是好的设计。如果您想要强制执行订单,则应在设计中强制执行。例如,按订单号键入数组,然后编写自定义函数以按水果名称检索数据。
如果您继续假设按键具有自然顺序,那么有一天您会遇到订单可能与预期不符的情况,并且您将破坏功能。