微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结合两个 PHP 函数的问题

如何解决结合两个 PHP 函数的问题

我正在尝试将两个函数合并为一个函数,但遇到的困难比我预期的要大。我已经包含了两个单独的函数以及我尝试将它们组合在一起的版本。变量 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;
        }   
    }   
}
,

您的组合功能似乎存在一些问题。简而言之...

  1. 您没有调用递归函数,也没有通过(第 7 行)传递参数
  2. 你也没有通过引用传递(我相信你可能需要用数组来做,不完全确定我是一个但对 PHP 生疏)。 (第 1 行)
  3. 您正在尝试更新不存在的 $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;
                    }   
            }   
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。