在PHP中,使用array_unshift()函数可将元素添加到数组开头,该函数直接修改原数组并返回新长度,适用于小型数组或不频繁操作,但凯老处理大型数组时性能较差。
array_unshift() 的基本用法- 函数原型:array_unshift(array &$array, mixed ...$values): int
&$array:通过引用传递数组,函数会直接修改原始数组,而非返回新数组。若需保留原数组,需先复制一份。
...$values:森枣支持传入一个或多个元素,按传入顺序从左到右依次添加到数组开头。
返回值:返回修改后数组的元素总数,适用于需即时获取数组大小的场景。
示例代码<?php// 示例1:向数字索引数组添加一个元素$fruits = ['apple', 'banana'];array_unshift($fruits, 'orange');print_r($fruits); // 输出: Array ( [0] => orange [1] => apple [2] => banana )// 示例2:向此孙拆数字索引数组添加多个元素$numbers = [3, 4, 5];array_unshift($numbers, 1, 2);print_r($numbers); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )// 示例3:向关联数组添加元素(结果为混合数组)$data = ['b' => 'banana', 'c' => 'cherry'];array_unshift($data, 'apple');print_r($data); // 输出: Array ( [0] => apple [b] => banana [c] => cherry )?>关联数组的注意事项- 数字键分配:新插入的元素会获得数字索引(如0),而原有关联键(如'b'、'c')保持不变,导致数组变为混合类型(数字键与字符串键共存)。
- 结构变化:若原数组为纯关联数组,操作后将变为混合数组,需确保此结果符合预期。
性能开销与适用场景- 时间复杂度:O(n),其中n为数组元素数量。每次操作需移动所有现有元素,内存移动和索引重排开销随数组规模线性增长。
- 对比array_push():向数组末尾添加元素的array_push()通常为O(1),性能更优。
- 适用场景:
小型数组:元素数量较少时(如几十或几百个),性能开销可忽略,优先选择代码简洁性。
特定逻辑需求:业务要求最新信息置于数组开头(如最近访问历史、消息队列优先展示)。
不频繁操作:仅偶尔向数组开头添加元素,而非在循环中频繁操作大型数组。
不推荐场景- 大型数组频繁操作:若数组可能包含大量元素(如几万或几十万)且需频繁在开头插入,建议避免使用array_unshift(),改用其他数据结构(如链表)或优化逻辑(如反向存储数据)。
总结array_unshift()是PHP中向数组开头添加元素的便捷工具,但需权衡其性能影响。在小型数组、特定逻辑需求或不频繁操作的场景下可放心使用;面对大型数组或高频操作时,需评估性能瓶颈并考虑替代方案。