问题描述
我正在尝试将两个函数合并为一个函数,但遇到的困难比我预期的要大。我已经包含了两个单独的函数以及我尝试将它们组合在一起的版本。变量 requestData
保存我正在迭代的对象。但是,在我的组合版本中,我不断收到致命错误 Call to undefined method 在具有 $this->requestData($value)
的行上。
我觉得我错过了一些简单的东西,所以为新手问题道歉。预先感谢您的任何帮助!
功能#1:
public function iterateRequestKeys($array)
{
foreach ($array as $key => $value)
{
if (is_object($value))
{
$this->iterateRequestKeys($value);
}
else
{
$updated_value = '1234';
$array->$key = $updated_value;
}
}
}
功能#2:
public function requestFindReplace($resourceID,$requestData)
{
$this->iterateRequestKeys($requestData);
}
组合:
public function requestFindReplace($resourceID,$requestData)
{
foreach ($requestData as $key => $value)
{
if (is_object($value))
{
$this->requestData($value);
}
else
{
$updated_value = '123';
$array->$key = $updated_value;
}
}
}
解决方法
看起来您正在递归调用 requestFindReplace(),因此您希望将其更改为 $this->requestFindReplace($resourceID,$value);
public function requestFindReplace($resourceID,$requestData)
{
foreach ($requestData as $key => $value)
{
if (is_object($value))
{
$this->requestFindReplace($resourceID,$value);
}
else
{
$updated_value = '123';
$array->$key = $updated_value;
}
}
}
,
您的组合功能似乎存在一些问题。简而言之...
- 您没有调用递归函数,也没有通过(第 7 行)传递参数
- 你也没有通过引用传递(我相信你可能需要用数组来做,不完全确定我是一个但对 PHP 生疏)。 (第 1 行)
- 您正在尝试更新不存在的
$array
(第 12 行)
试试这个代码:
public function requestFindReplace($resourceID,&$requestData)
{
foreach ($requestData as $key => $value)
{
if (is_object($value))
{
$this->requestFindReplace($resourceID,$value);
}
else
{
$updated_value = '123';
$requestData->$key = $updated_value;
}
}
}