跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

PHP array_slice 与 array_splice 使用对比

array_slice用于读取数组片段且不改变原数组,array_splice用于修改原数组并可删除、替换或插入元素;前者默认重排数字键(可选保留),后者始终重排数字键且不支持保留键名。 array_slice 用于“读取”数组的一段,不改变原数组; array_splice 用于“修改”数组,可删除、替换、插入元素,会直接改动原数组。 作用目标不同:取值 vs 改写 array_slice 是纯函数式操作,只返回新数组,原数组完全不变。适合需要截取部分数据做临时处理的场景,比如分页取数据、提取前 N 个元素。 语法:
array_slice($array, $offset, $length, $preserve_keys)
示例:
$new = array_slice($arr, 1, 3);
取索引 1 开始的 3 个元素,$arr 不变 是否影响原数组:关键区别 array_splice 会直接修改传入的数组(按引用操作),同时返回被移除的片段。它不只是“切”,而是“切掉并可塞入新内容”。 语法:
array_splice($array, $offset, $length, $replacement)
示例:
array_splice($arr, 2, 1, ['x', 'y']);
把索引 2 处的 1 个元素删掉,插入 'x' 和 'y',$arr 被改写 若省略 $replacement,相当于只删除;若 $length 为 0,则只插入不删除 键名处理逻辑差异 array_slice 默认重排数字键(除非开启 $preserve_keys=true),而 array_splice 总是重排数字键,且不支持保留键名选项 —— 它的设计定位就是“结构变更”,键名重排是默认行为。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; 想保留原始键?array_slice 可设第 4 参数为 true;array_splice 不行 关联数组中,两者都保留字符串键,但数字键都会被重置(除非 slice 显式要求保留) 常见误用提醒 把 array_slice 当作“删除元素”用,或期望 array_splice 返回未改动的副本,都是典型误区。 错误写法:
$arr = array_slice($arr, 0, -1);
—— 这只是赋值新数组,并非“删末尾”,原 $arr 仍存在,只是变量被覆盖 正确删末尾:
array_pop($arr)
或
array_splice($arr, -1)
想复制再改?先
$copy = $arr;
再对 $copy 用 array_splice

相关文章