可能重复:
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/
假设关联键控数组具有可预测的顺序不是一个好的设计。如果您想要强制命令,您应该在设计中强制执行。例如,按订单号键入数组,然后编写自定义函数以按水果名称检索数据。
如果你一直假设密钥有一个自然的顺序,那么有一天你会遇到这样一种情况,即顺序可能与你预期的不一样,并且你的功能会被破坏。