欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

array_splice函数结果赋值

程序员文章站 2022-06-03 23:26:09
...
$arr1 = array(1,2,3);
$arr2 = array(3,4,5);
$arr1 = array_splice($arr2,1,1);
print_r($arr1);


结果是Array ( [0] => 4 )
按理说,赋值运算符在最后完成array_splice函数后才进行,
那么 array_splice($arr2,1,1)得到的数组$arr2内的值应该是(3,4),
然后运算“=”,则得到$arr1数组的内容应该是(3,4),但是实际上运行整个
$arr1 = array_splice($arr2,1,1),却得到$arr1数组的内容为(4),求解。


回复讨论(解决方案)

为什么呢?你这算的什么帐
array_splice($arr2,1,1) 是从 $arr2 的第 1 元素(计数从0开始)删除 1 个元素,并返回删除的元素
你只让他删除 1 个,他绝不会自作主张的去删 2 个

array_slice() 函数在数组中根据条件取出一段值,并返回。

你还没理解这函数的意思吧。。。。。。你写得代码的意思是,从数组的第二个位置开始取,取一个值

楼上的各位,我的本意是想使用array_splice将$arr2的 第二位删除并将其赋给$arr1,然后显示剩下的数组内的值,然后顺手将代码写成了:$arr1 = array_splice($arr2,1,1)。
得出的结果让我很不理解,我看网上对array_splice的定义是删除或替换数组内指定部分的值,但是$arr1 = array_splice($arr2,1,1)代码的结果取到的反而是我想删除的值,是否$arr1 = array_splice($arr2,1,1)等同于array_slice($arr2,1,1)?

手册中数的很明白了:返回一个包含被移除单元的数组
仅从返回结果上看, array_splice($arr2,1,1) 等同于 array_slice($arr2,1,1)
但前者已经改变了 $arr2 的原始状态

谢谢5楼,资料书上没写明白这个函数的返回值,之前一直以为这个函数返回原数组剩下的数据,谢谢。