PHP中splice,php函数array_splice

函数用法:array_splice($array,$offset,$length,$array_replace)

$offset:    向原数组中删除元素的起始位置,也是插入值的起始位置

$length:    原数组中被删除的元素数量

$array_replace:    要被插入到原数组中的值,多个值必须以数组的形式提供

注意:当参数$offset是负数时,用原数组的长度加上负数作为相应的参数来计算。

一、当原数组是索引数组时

1、这个方法直接在原数组$array上删除由$offset和$length指定的元素,并重建数组索引,它的返回值是被删掉的数组元素组成的数组(这个索引也被重建):

$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");

print_r(array_splice($a1,0,2));

//输出:Array ( [0] => Dog [1] => Cat )

print_r($a1);

//输出:Array ( [0] => Horse [1] => Bird )

$a2 = array('apple','banana','cat','dog','bird');

print_r(array_splice($a2,2,1));

//输出:Array( [0] => cat )

print_r($a2);

//输出:Array( [0] => apple [1] =>banana [2] => dog [3] => bird )

2、如果给这个方法提供了第四个参数$array_replace,则会在原数组上修改,把由$offset和$length指定的元素的值用$array_replace中的元素值替代,并重建原数组的索引。替换的顺序是$array_replace中元素的创建顺序,与其索引值无关。

$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");

$a2=array(0=>"Tiger",1=>"Lion");

print_r(array_splice($a1,0,2,$a2));

//输出:Array ( [0] => Dog [1] => Cat )

print_r($a1);

//输出:Array ( [0] => Tiger [1] => Lion [2] => Horse [3] => Bird )

3、事实上,$length的大小与$array_replace的长度无关,$length只代表从原数组中删除多少个元素,无论删除多少个元素,$array_replace中的所有值都会被插入到原数组中的指定起始位置$offset

例如:如果提供第四个参数的同时,$length设为0,则会在原数组中$offset位置开始插入$array_replace中的所有元素

$a1=array(0=>"Dog",1=>"Cat");

$a2=array(0=>"Tiger",1=>"Lion",2=>"Elepant");

print_r(array_splice($a1,1,0,$a2));

//输出:Array ( )

print_r($a1);

//输出:Array ( [0] => Dog [1] => Tiger [2] => Lion [3] => Elepant [4] => Cat )

二、当原数组是关联数组时

1、$offset的计数方法也是按照原数组中元素的创建顺序,与其索引值无关。

2、如果提供了第四个参数,则$array_replace中的元素会按照创建顺序在原数组指定位置进行替换,并且原数组中被替换的那几个元素 和 剩下元素中索引值是数字的元素,它们的索引会从0开始重建

$a1=array('3'=>"Dog",'b'=>"Cat",'2'=>"Horse",1=>"Bird",'5d'=>'Bug','d'=>'buck');

$a2=array('b'=>"Tiger",'a'=>"Lion");

print_r(array_splice($a1,1,2,$a2));

//输出:Array ( [b] => Cat [0] => Horse )

print_r($a1);

//输出:Array ( [0] => Dog [1] => Tiger [2] => Lion [3] => Bird [5d] => Bug [d] => buck )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值