如何在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中的数组开头插入一个项目?的主要内容,如果未能解决你的问题,请参考以下文章