如何在PHP中的数组开头插入一个项目?

Posted

技术标签:

【中文标题】如何在PHP中的数组开头插入一个项目?【英文标题】:How to insert an item at the beginning of an array in PHP? 【发布时间】:2010-12-16 22:01:48 【问题描述】:

我知道如何将它插入到末尾:

$arr[] = $item;

但是如何插入到开头呢?

【问题讨论】:

$arr[-1] = $item; 在这里找到:***.com/a/15252657/669677 @2astalavista,这不起作用:print_r($arr) => Array ( [0] => a, [1] => b, [-1] => c ) @returnthis.lau_ 在这种情况下,您应该使用 for 循环 - 从 -1 开始 - 使其工作:for ($i = -1; $i < count($a)-1; $i++) 如引用的链接所示,但很容易忘记,所以我不这样做不再喜欢那个解决方案了。 【参考方案1】:

有两种解决方案:

    如果您的数组包含对您很重要的键
$new = ['RLG' => array(1,2,3)];
$array = ['s' => array(2,3), 'l' => [], 'o' => [], 'e' => []];

$arrayWithNewAddedItem = array_merge($new, $array);
    如果您有一个没有任何键的数组。
array_unshift(array, value1);

【讨论】:

【参考方案2】:

使用字符串/自定义键

关联数组的开头插入一个项目
<?php

$array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo'];

$array = array_reverse($array);

$array['newKey'] = 'newValue';

$array = array_reverse($array);

结果

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]

【讨论】:

【参考方案3】:

对于关联数组,您可以使用合并。

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)

【讨论】:

array_merge 重置数组键。所以这不是一个好的解决方案。谢谢。【参考方案4】:

带自定义索引:

$arr=array("a"=>"one", "b"=>"two");
    $arr=array("c"=>"three", "d"=>"four").$arr;

    print_r($arr);
    -------------------
    output:
    ----------------
    Array
    (
    [c]=["three"]
    [d]=["four"]
    [a]=["two"]
    [b]=["one"]
    )

【讨论】:

数组不能这样拼接 可能他的意思是用加号(+)而不是逗号(.)【参考方案5】:

或者如果你想在循环中更改它,你可以使用临时数组,然后删除真正的数组:

$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];

unset($array[1]);
array_unshift($array , $temp_array);

输出将是:

array(0 => 'b', 1 => 'a', 2 => 'c')

在循环中执行此操作时,您应该在将项目附加到数组后清理$temp_array

【讨论】:

【参考方案6】:

使用array_unshift($array, $item);

$arr = array('item2', 'item3', 'item4');
array_unshift($arr , 'item1');
print_r($arr);

会给你

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)

【讨论】:

如果您需要文字而不是数字键怎么办? @Evan,array_unshift 的文档说以下All numerical array keys will be modified to start counting from zero while literal keys won't be touched. 有两个问题:1)重新索引数组2)不能添加带有索引的项目。 如果您有关联数组或需要保留键,请在此处查看用户示例:php.net/manual/en/function.array-unshift.php 有几个很好的示例说明如何完成此操作!【参考方案7】:

使用 array_unshift() 将第一个元素插入到数组中。

用户 array_shift() 删除数组的第一个元素。

【讨论】:

【参考方案8】:

如果是关联数组或编号数组,您不想更改数组键:

$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

array_merge 不起作用,因为它总是重新索引数组。

【讨论】:

注意! "+ 运算符返回附加到左侧数组的右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,右侧数组中的匹配元素将是无视。” -- 见:***.com/a/2140094/3411766 解决方案很好,因为可以添加带有索引的项目,并且没有重新索引数组;但是,如果左侧数组中有相同的索引,请注意删除右侧数组中的项目。【参考方案9】:

这会有所帮助

http://www.w3schools.com/php/func_array_unshift.asp

array_unshift();

【讨论】:

^ OBE :“W3Schools 已在很大程度上解决了这些问题,并解决了大多数签名开发人员的担忧。” ~W3Fools.com【参考方案10】:

使用函数array_unshift

【讨论】:

低质量的早期 Stack Overflow 答案是。 -- 尤达

以上是关于如何在PHP中的数组开头插入一个项目?的主要内容,如果未能解决你的问题,请参考以下文章

php 在数组中的特定键之前插入值或键/值对。如果key不存在,则值将预先添加到数组的开头。

如何在php中的数组中插入新的键值对?

如何在列表中所有项目的开头插入一个字符串?

如何将 PHP 数组中的值插入 MySQL 表?

PHP如何在数组指定位置插入元素

如何在javascript中插入带有innerHTML的php数组