php - 如何设置使用变量的函数不会改变其在当前函数中的内容?
问题描述
我的函数 getUser() 对用户信息进行数据库选择。在这个函数中,我调用了另一个名为 calcPercentage() 的函数,它从存储在 $result 中的数据库中获取接收到的值,然后删除一些值(索引)并进行计算。完成后,第二个函数将一个值返回给第一个函数。
我的问题是第二个函数 calcPercentage() 中删除的值正在影响从数据库接收到的原始值。
查看代码
function getUser()
{
$result = DB::select();
// say $result = name, surname, email, telephone
$percentage = $this->calcPercentage($result);
var_dump($result)
// now $result = name, surname
}
function calcPercentage($data)
{
$u_data = $data;
unset($u_data->email);
unset($u_data->telephone);
// the above values are not needed for the calculations,
// thus they are being removed.
... do calculation
return $percentage
//$percentage would be = 100 || >100;
}
我想从对象中删除值而不影响函数 getUser(); 中的原始变量;预期结果。
function getUser()
{
$result = DB::select();
// say $result = name, surname, email, telephone
$percentage = $this->calcPercentage($result);
var_dump($result)
// now $result = name, surname, email, telephone
}
我应该在这里对数据库进行另一个查询吗?
解决方案
在调用calcPercentage()
方法之前,克隆你的结果对象。
function getUser(){
$result = DB::select();
// say $result = name, surname, email, telephone
$result_copy = clone $result;
$percentage = $this->calcPercentage(result_copy);
var_dump($result)
// now $result= name, surname, email, telephone
}
推荐阅读
- linux - Eroor:您需要安装 gtk-doc >= 1.12 才能构建 GStreamer RTSP 服务器(Gstreamer RTSP 服务器交叉编译)
- reactjs - 链接中的状态未设置,返回未定义
- python - 使用存储在 python 中的多个矩阵中的数据创建和求解线性方程组的不同组合
- javascript - 单击任何一个 div 时隐藏其他 div
- r - 如何将数据写入具有不同索引的单个列?
- windows - Windows 10 和 2012 中的 Windows IOCP 套接字编程崩溃
- google-chrome - 有没有办法在没有 Selenium 的情况下打开新版本的 Chrome
- c# - 表格 1 当前上下文中不存在
- r - 如何使用两个单独的数据集创建 3d 图?在 R 中
- julia - “argmax().I”在 Julia 中是什么意思