php - 在函数中调用 array_splice/unset:为什么副作用不会传播?
问题描述
array_splice
我想用 PHP 从数组中删除元素,发现使用or很容易unset
。
我想在另一个函数中使用它,该函数将此数组与要删除的元素作为参数。但是,该函数具有其他一些返回值,并且该数组应作为副作用更新(array_splice
或unset
两者都按副作用工作)。我的代码如下所示:
<?php
function removeSomeElements($arr)
{
for ($i = 0; $i<count($arr); $i++) {
$c = $arr[$i];
if ($c > 2) {
echo "Element $c found at $i\n";
unset($arr[$i]);
}
}
print_r($arr); // misses middle element
return true;
}
$t = [0, 3, 1];
print_r($t); // original array
$success = removeSomeElements($t);
print_r($t); // should be missing middle element, but everything is here
我遇到了与 相同的问题array_splice
,也就是说,当我将调用替换为unset
以下内容时:
array_splice($arr, $i, 1);
$i--;
函数的参数在函数内部很好地更新,但在外部没有。我错过了什么吗?
注意:我可以很容易地找到解决方法,我只是想知道这是否可行以及为什么/为什么不可行。提前致谢!
解决方案
推荐阅读
- iptables - 由于fail2ban,iptables变得巨大
- java - 如何在图书馆的活动中重用应用程序的工具栏?
- python - 如何从用户的选择中调用子程序
- python-3.x - 创建具有一个/多个字符替换的字符串列表
- java - 如何验证用户是否已登录 ADFS
- excel - 根据 G 列值从工作表中逐行删除验证规则
- vue.js - vue js axios对数组列表的响应
- json - 使用 protobuf 子字段解组 JSON 消息
- nginx - 如何使 nginx 仅重定向来自特定服务器的请求并将其他请求传递到其原始服务器,如提琴手?
- node.js - Axios 不发送标头,即使 CORS 预检已经启用