PHP - 将项添加到关联数组的开头

tee*_*ink 106 php

如何将项添加到关联数组的开头?例如,假设我有一个这样的数组:

$arr = array('key1' => 'value1', 'key2' => 'value2');
Run Code Online (Sandbox Code Playgroud)

当我向其添加内容时$arr['key0'] = 'value0';,我得到:

Array
(
    [key1] => value1
    [key2] => value2
    [key0] => value0
)

我该如何做到这一点

Array
(
    [key0] => value0
    [key1] => value1
    [key2] => value2
)

谢谢,
Tee

Fel*_*ing 222

你可以使用union运算符:

$arr1 = array('key0' => 'value0') + $arr1;
Run Code Online (Sandbox Code Playgroud)

array_merge.

  • @Timo Huovinen,array_merge无效,因为PHP将您的密钥转换为数字,而array_merge重置数字键. (4认同)
  • 哪个更有效率?union或array_merge?如果我可以问... (3认同)
  • @melvin:也许你可以做一个性能测试并告诉我们. (3认同)
  • @FelixKling:我怎么不知道这个union运算符?惊人.这很棒! (3认同)
  • 我很确定联合会更快。 (2认同)

out*_*tis 21

一种方法是array_merge:

<?php
$arr = array('key1' => 'value1', 'key2' => 'value2');
$arr = array_merge(array('key0' => 'value0'), $arr);
Run Code Online (Sandbox Code Playgroud)

根据具体情况,您也可以使用ksort.

  • 在这种情况下无关紧要,但如果一个带有键''key0'的元素已经存在于`$ arr`中,那么这个_value_将覆盖前置的新值(即`'value0'将被覆盖).您可以使用[union运算符(`+`)](http://www.php.net/manual/en/language.operators.array.php)来解决此问题. (3认同)

Mar*_*ker 8

$array = array('key1' => 'value1', 'key2' => 'value2');
array_combine(array_unshift(array_keys($array),'key0'),array_unshift(array_values($array),'value0'))
Run Code Online (Sandbox Code Playgroud)

  • +1是如此丑陋. (27认同)
  • 代码,而不是男人.如果我有适当的性别或说服力,我相信我会发现这个男人很帅. (7认同)