Php 如何设置使用变量的函数不改变其在当前函数中的内容?
我的函数getUser()对用户信息进行数据库选择。在这个函数中,我调用另一个名为calcPercentage()的函数,该函数从存储在$result中的数据库获取接收到的值,然后删除一些值(索引)并进行计算。完成后,第二个函数将向第一个函数返回一个值 我的问题是,第二个函数calcPercentage()中删除的值会影响从数据库接收到的原始值 参见代码Php 如何设置使用变量的函数不改变其在当前函数中的内容?,php,mysql,laravel,oop,Php,Mysql,Laravel,Oop,我的函数getUser()对用户信息进行数据库选择。在这个函数中,我调用另一个名为calcPercentage()的函数,该函数从存储在$result中的数据库获取接收到的值,然后删除一些值(索引)并进行计算。完成后,第二个函数将向第一个函数返回一个值 我的问题是,第二个函数calcPercentage()中删除的值会影响从数据库接收到的原始值 参见代码 function getUser() { $result = DB::select(); // say $result = name, s
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()
方法之前,clone您的结果对象
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
}
您需要使用
clone
制作对象的副本。