Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并两个PHP函数的问题_Php_Function_Foreach - Fatal编程技术网

合并两个PHP函数的问题

合并两个PHP函数的问题,php,function,foreach,Php,Function,Foreach,我试图将两个函数合并成一个函数,但我遇到的困难比我预期的要多。我已经包括了这两个独立的函数以及我试图将它们组合在一起的版本。变量requestData保存我正在迭代的对象。然而,在我的组合版本中,我一直在使用$this->requestData($value)的行中得到一个调用未定义方法的致命错误 我觉得我错过了一些简单的东西,所以为这个新手问题道歉。提前感谢您的帮助 功能#1: 功能#2: 合并: public function requestFindReplace($resourceID,

我试图将两个函数合并成一个函数,但我遇到的困难比我预期的要多。我已经包括了这两个独立的函数以及我试图将它们组合在一起的版本。变量
requestData
保存我正在迭代的对象。然而,在我的组合版本中,我一直在使用
$this->requestData($value)
的行中得到一个调用未定义方法的致命错误

我觉得我错过了一些简单的东西,所以为这个新手问题道歉。提前感谢您的帮助

功能#1:

功能#2:

合并:

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)


组合函数在这里似乎有一些问题。简言之

  • 您没有调用递归函数,也没有传递参数(第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;
                        }   
                }   
        }
    

    谢谢你的帮助!您的代码确实消除了致命错误,但我认为我仍然有一些不太正确的地方。如果
    requestData
    对象以5个元素/对象开始,当我在循环后转储对象时,我只会得到
    requestData
    中的最后一个对象。因此,不知何故,我用每次迭代来替换,而不是添加是否有意义?@Jason我还没有准备好测试这一点的PHP,但是您可以尝试从函数行(即第1行)中删除
    &
    。通过参考可能是问题所在,我想不起来了,已经有一段时间了。谢谢你的帮助!结果是你的代码运行正常,我只是错误地引用了对象。我衷心感谢!谢谢你的帮助!您的代码确实消除了致命错误,但我认为我仍然有一些不太正确的地方。如果
    requestData
    对象以5个元素/对象开始,当我在循环后转储对象时,我只会得到
    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;
                        }   
                }   
        }
    
    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;
            }   
        }   
    }
    
    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;
                        }   
                }   
        }