0
public function action_xmlread()
{
        $xml = simplexml_load_file('new.xml');

        foreach($xml->body as $b)
        {
            foreach ($b->node as $node) {
                $this->dig($node);
            }
        }
}
public function dig($node)
{
    if(isset($node->tit) && !isset($node->url))
    {
        $this->dig($node);
    }else{
        $this->grabData($node);
    }
}
public function grabData($node)
{
    $category_names = array('userdef1', 'userdef2');

    $url = $node->url;

    $category = '';
    foreach($category_names as $catname)
    {
        if(isset($node->$catname))
        {
            $category = $node->$catname;

            break;
        }
    }

    $keywords = $node->key;
    $title = $node->tit;
    if(empty($url) && empty($category))
    {
        continue;
    }
    $this->saveItem($title, $url, $category, $keywords);
    echo $url . " , category: ". $category;
    echo '<br />';
}

xmlread() を実行すると、次のように終了します。

関数の最大ネスティング レベル '100' に達しました。中止します!

上で

$this->dig($node); 

dig() 関数の内部..どうすれば解決できますか?

4

2 に答える 2

2

に渡すパラメーターを変更していないため、無限再帰になりますdig。たぶん、子ノードを渡す必要がありますか?

于 2012-05-09T19:58:54.583 に答える
1

関数のネスト レベルを上げるには、php.ini を編集する必要があります。しかし、あなたの問題は別の場所にあるかもしれません。

xdebug.max_nesting_level = 200

ソース

于 2012-05-09T20:01:07.750 に答える