hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php数组怎样分段【php题目】

2019-11-26PHP问题搜搜PHP网59°c
A+ A-

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网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php数组怎样分段【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: