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),求解。
$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楼,资料书上没写明白这个函数的返回值,之前一直以为这个函数返回原数组剩下的数据,谢谢。
推荐阅读
-
oracle sys_connect_by_path 函数 结果集连接
-
JS声明式函数与赋值式函数实例分析
-
用VLOOKUP函数根据编号查找日期结果却显示为数字的解决方法
-
C#中字段、属性、只读、构造函数赋值、反射赋值的相关
-
SQLServer CONVERT 函数测试结果
-
php数组函数序列之array_splice() - 在数组任意位置插入元素
-
c++ string类型成员变量在调用构造函数后未能正确赋值
-
Oracle列转行函数Listagg()查询结果的去重(去除重复值)的方法详解
-
c/c++赋值函数(重载=号运算符)
-
如何利用php array_multisort函数 对数据库结果进行复杂排序