如何添加新的[键]=>;[值]在PHP中的Assoc数组中的特定关联键后配对?
可能重复:如何添加新的[键]=>;[值]在PHP中的Assoc数组中的特定关联键后配对?,php,arrays,associative-array,Php,Arrays,Associative Array,可能重复: 如何在PHP中的Assoc数组中的特定关联键之后添加新的[key]=>[value]对 例如,假设我们有一个名为$fruits的数组: array { [apple] => 1 [banana] => 3 [orange] => 4 } 如何将[plum]=>2添加到$fruits中,使其显示在[apple]键之后,但在[banana]键之前 谢谢。您可能需要使用array\u splice()将阵列分成两部分,然后使用array\u mer
如何在PHP中的Assoc数组中的特定关联键之后添加新的
[key]=>[value]
对
例如,假设我们有一个名为$fruits
的数组:
array {
[apple] => 1
[banana] => 3
[orange] => 4
}
如何将[plum]=>2
添加到$fruits
中,使其显示在[apple]
键之后,但在[banana]
键之前
谢谢。您可能需要使用
array\u splice()
将阵列分成两部分,然后使用array\u merge()
重新创建阵列-试试我刚刚设计的这个漂亮功能
现场样品:
如果您的最终目标是基于水果名称的水果序列号(或其他) 例如,若要查找苹果的序列号,您将使用水果['apple'],则数组中的特定元素存在于何处并不重要,若您确实希望以自己的方式查找,则可以使用array_splice()函数 这里有一个很好的教程
假设关联键控数组具有可预测的顺序,这不是好的设计。如果您想要强制命令,您应该在设计中强制执行。例如,按订单号为数组设置键,然后编写自定义函数以按水果名称检索数据
如果你一直假设键有一个自然的顺序,总有一天你会遇到这样的情况:顺序可能与你预期的不一样,并且你的功能会被破坏。@DaveRandom:这个编辑很好。谢谢。Sandepan Nath的编辑无效:
/***@desc在关联数组的中间添加一个数组值*@param array$arr-要插入的数组*@param string$key-要为新插入的元素指定的键名*@param mixed$val-新插入的元素的值*@param int$index-在哪个序列号处?要将新数组值插入到原始数组$arr*/
编辑中有什么错误?请解释@nonnb。也许句子可以改进,但是…@SandePanath编辑Q或a应该是一些次要的事情,比如格式或语法,而不是添加到答案或发表评论(使用您自己的答案,或者为此添加评论)。然而,因为你的编辑似乎包含了很好的建议,如果你的编辑丢失了,那将是一个悲剧,因此我把它贴在了帖子下面。如你所见,达奇已经收回了他的答案。好了,现在清楚了。所以,这是“无效”的方式。感谢在本例中,您似乎希望按照值的升序对数组进行排序,并维护索引,也称为asort
。
<?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 ));
}
?>