0

正如标题所暗示的,我有一个函数,我对一个数组进行了一些更改(这个数组是我的参数)。然后我意识到我使用了我的实际数组的副本。

我知道有一种方法可以获取实际数组而不是副本,它是什么?提前谢谢大家,我知道你会很快解决这个问题:)

这是我使用它的地方

function findChildren($listOfParents)
    {
        static $depth=-1;
        $depth++;

        foreach ($listOfParents as $thisParent)
        {
            $thisParent->title = str_repeat(" >", $depth) . $thisParent->title;
            $children = page::model()->findAll(array('condition'=>'parent = ' . $thisParent->id));
            findChildren($children);
        }

        $depth--;
    }

所以我需要这个 $listOfParents,而不是他的副本。

4

3 回答 3

3

尝试通过引用传递值

function findChildren(&$listOfParents)
    {
        static $depth=-1;
        $depth++;

        foreach ($listOfParents as $thisParent)
        {
            $thisParent->title = str_repeat(" >", $depth) . $thisParent->title;
            $children = page::model()->findAll(array('condition'=>'parent = ' . $thisParent->id));
            findChildren($children);
        }

        $depth--;
    }

请注意与&号,它表示您正在处理原始变量,而不是副本。

于 2012-05-11T15:31:54.513 回答
1

您正在谈论通过引用传递变量:http: //php.net/manual/en/language.references.pass.php

试试这个:

function findChildren(&$listOfParents)
    {
        static $depth=-1;
        $depth++;

        foreach ($listOfParents as $thisParent)
        {
            $thisParent->title = str_repeat(" >", $depth) . $thisParent->title;
            $children = page::model()->findAll(array('condition'=>'parent = ' . $thisParent->id));
            findChildren($children);
        }

        $depth--;
    }
于 2012-05-11T15:32:01.860 回答
1

通过引用传递它

function funcName (array &$param)
{
    // Do work here
}
于 2012-05-11T15:32:26.780 回答