【问题标题】:PHP - add item to beginning of associative array [duplicate]PHP - 将项目添加到关联数组的开头[重复]
【发布时间】:2011-08-12 15:05:33
【问题描述】:

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

$arr = array('key1' => 'value1', 'key2' => 'value2');

当我在 $arr['key0'] = 'value0'; 中添加一些内容时,我得到:

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

我是怎么做到的

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

谢谢,
三通

【问题讨论】:

标签: php


【解决方案1】:

你可以使用union operator:

$arr1 = array('key0' => 'value0') + $arr1;

array_merge

【讨论】:

  • 哪个效率更高? union 还是 array_merge?如果我可以问...
  • @melvin:也许你可以做一个性能测试并告诉我们。
  • 我很确定 union 更快。
  • @Timo Huovinen,array_merge 不起作用,因为 PHP 将您的键转换为数字,并且 array_merge 重置了数字键。
  • @FelixKling:我怎么不知道这个联合运营商?惊人的。这太棒了!
【解决方案2】:

一种方法是使用array_merge

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

视情况而定,您也可以使用ksort

【讨论】:

  • 在这种情况下无关紧要,但如果 'key0' 中已存在键为 'key0' 的元素,则此 value 将覆盖前面的新值 (即'value0' 会被覆盖)。您可以使用union operator (+) 来解决此问题。
【解决方案3】:
$array = array('key1' => 'value1', 'key2' => 'value2');
array_combine(array_unshift(array_keys($array),'key0'),array_unshift(array_values($array),'value0'))

【讨论】:

  • +1 因为太丑了。
  • 代码,而不是人。如果我的性别或说服力合适,我相信我会觉得这个男人很帅。
  • 感谢您暗示我是一个糟糕的编码员@outis,非常感谢侮辱
  • @outis - 你的舌头确实上油了......在同一组commnets中的两次侮辱,我仍然在微笑
  • 这个名字是 Triumph the Insult Comic Dev。我整个星期都在这里。
【解决方案4】:
function unshift( array & $array, $key, $val)
{
    $array = array_reverse($array, 1);
    $array[$key] = $val;
    $array = array_reverse($array, 1);

    return $array;
}

【讨论】:

    【解决方案5】:

    如果您不想合并数组,您可以在数组上使用ksort(),然后再对其进行迭代。

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多