提供Discuz ,ECShop ,PHPCMS ,帝国CMS ,CSS教程 ,PHP教程 ,DedeCMS ,WordPress ,HTML教程等cms问题查询.
当前位置: PHP问题 > php数组怎样分段【php问题】,php,数组,分段

array_slice和array_splice函数是用在掏出数组的一段切片,array_splice还有效新的切片替代原删除切片位置的功用。相似javascript中的Array.prototype.splice和Array.prototype.slice要领。

array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

返回数组中指定下标offset和长度length的子数组切片。

参数申明

设第一个参数数组的长度为num_in。

offset

假如offset是正数且小于length,则返回数组会从offset最先;假如offset大于length,则不操纵,直接返回。假如offset是负数,则offset = num_in+offset,假如num_in+offset == 0,则将offset设为0。

length

假如length小于0,那末会将length转为num_in - offset + length;不然,假如offset+length > array_count,则length = num_in - offset。假如处置惩罚后length照样小于0,则直接返回。

preserve_keys

默许是false,默许不保留数字键值原递次,设为true的话会保留数组本来的数字键值递次。

相干引荐:《php数组》

运用实例

<?php
$input = array("a", "b", "c", "d", "e");
 
$output = array_slice($input, 2);   // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3);  // returns "a", "b", and "c"
 
print_r(array_slice($input, 2, -1)); // array(0 => 'c', 1 => 'd');
print_r(array_slice($input, 2, -1, true)); // array(2 => 'c', 1 => 'd');

运转步骤

·处置惩罚参数:offset、length

·挪动指针到offset指向的位置

·从offset最先,拷贝length个元素到返回数组

运转流程图以下:

array_splice

array array_splice(array &$input,int $offset[, int $length = 0 [, mixed $replacement = array() ]])

删除input中从offset最先length个元素,假如有replacement参数的话用replacement数组替代删撤除的元素。

参数申明

array_splice函数中的offset和length参数跟array_slice函数中的用法一样。

replacement

假如这个参数设置了,那末函数将运用replacement数组来替代。

假如offset和length指定了没有任何元素须要移除,那末replacement会被插进去到offset的位置。

假如replacement只要一个元素,能够不必array()去包着它。

运用示例

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input变成 array("red", "green")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input变成 array("red", "yellow")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input变成 array("red", "orange")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input为 array("red", "green",
//     "blue", "black", "maroon")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input为 array("red", "green",
//     "blue", "purple", "yellow");

源码解读

在array_splice中,有这么一段代码:

/* Don't create the array of removed elements if it's not going
  * to be used; e.g. only removing and/or replacing elements */
 if (return_value_used) { // 假如有效到函数返回值则建立返回数组,不然不建立返回数组
   int size = length;
 
   /* Clamp the offset.. */
   if (offset > num_in) {
     offset = num_in;
   } else if (offset < 0 && (offset = (num_in + offset)) < 0) {
     offset = 0;
   }
 
   /* ..and the length */
   if (length < 0) {
     size = num_in - offset + length;
   } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in)     {
     size = num_in - offset;
   }
 
   /* Initialize return value */
   array_init_size(return_value, size > 0 ? size : 0);
   rem_hash = &Z_ARRVAL_P(return_value);
 }

array_splice函数返回的是被删除的切片。这段代码的意义是,假如array_splice须要返回值,那末才建立返回数组,不然不建立,以避免糟蹋空间。这也是一个编程小技能,仅当须要的时刻才返回。比如在函数中运用$result = array_splice(...),那末return_value_used就是true。

总结

到此本文完毕,在日常平凡编程中,应该像这两个函数实现时的做法一样,将最特别的状况先处置惩罚掉,然后再继承,以避免做了过剩的推断;有须要保留新变量的时刻才请求新的空间,不然会形成糟蹋。

以上就是php数组怎样分段的细致内容,更多请关注ki4网别的相干文章!

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

分享到:
赞(0) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"php数组怎样分段【php问题】,php,数组,分段"

最新评论

    暂无留言哦~~

博客简介

看古风美女插画Cos小姐姐,素材合集图集打包下载:炫龙网,好看二次元插画应有尽有,唯美小姐姐等你来。

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

服务热线:
 

 QQ在线交流

 旺旺在线