如何在PHP中在数组开头插入项?

How to insert an item at the beginning of an array in PHP?

我知道如何插入到结尾:

1
$arr[] = $item;

但是如何把它插入开头呢?


使用数组"unshift($array,$item)";

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

会给你

1
2
3
4
5
6
7
Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)


对于不想更改数组键的关联数组或编号数组:

1
2
3
$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

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


使用函数array_unshift


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

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


这将有帮助

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


使用字符串/自定义索引键在关联数组的开头插入项

1
2
3
4
5
6
7
8
9
<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

结果

1
2
3
4
5
[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]


或者您可以使用临时数组,然后删除实际数组,如果您想在循环中更改它:

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

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

输出将是:

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

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


使用自定义索引:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$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"]
    )