0

再帰関数を使用してメニューをツリーに変換しています。データベースから取得した配列は次のとおりです。

array ( 
  [0] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 1 
    [parent] => 0 
    [name] => Meter Reading 
    [link] => # ) 
  [1] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 2 
    [parent] => 0 
    [name] => Parameterization 
    [link] => # ) 
  [2] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 3 
    [parent] => 0 
    [name] => View Reports 
    [link] => # ) 
  [3] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 4 
    [parent] => 0 
    [name] => Management & Control 
    [link] => # ) 
  [4] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 5 
    [parent] => 1 
    [name] => Billing Data 
    [link] => # ) 
  [5] => stdClass Object ( 
    [nav_group_id] => 1 
    [entity_id] => 6 
    [parent] => 1 
    [name] => MDI Billing Data
    [link] => # )

上記の配列をこの関数に渡すことで、再帰関数を呼び出しています。

$this->parseAndPrintTree('0',$navigation_all);
//die();   (issue here)

この関数の後に使用するdie();と、正しいメニューが表示されます。使用しない場合die();、ページの読み込みに失敗し、次のエラーが発生します。

コンテンツ エンコーディング エラー 表示しようとしているページは、無効またはサポートされていない形式の圧縮を使用しているため、表示できません。」

...出力は表示されません。ここに私の再帰関数があります:

function parseAndPrintTree($root, $tree) 
{
    $return = array();
    if(!is_null($tree) && count($tree) > 0) 
    {
        echo '<ul>';
        foreach($tree as $child => $parent) 
        {
            if($parent->parent == $root) 
            {                    
                unset($tree[$child]);
                echo '<li>'.$parent->name;
                $this->parseAndPrintTree($parent->entity_id, $tree);
                echo '</li>';
            }
        }
        echo '</ul>';
    }
}
4

2 に答える 2

0

何かに取り組んでいるようですので、これを回答として投稿します。

gzip圧縮を有効にすると、圧縮関数が出力する前にブラウザに何も出力できなくなります。これは、Codeigniterが実行スタックの終わり近くで自動的に実行します。再帰関数には、この出力を実行しているエコーがあります。

これを修正する最善の方法は、この関数をヘルパー関数に変換してから、この関数の呼び出しを、現在のコントローラーやライブラリではなく、ビューファイル内に配置することです。

于 2012-07-19T13:22:47.637 に答える
0

後世のために、私は Firefox でコード 2.1.0 に取り組んでいるときにこのエラー メッセージに出くわし、ここにたどり着きました。私の問題は、コードにサブビューで生成されたエラーまたは警告があることでした。/application/config/config.php ファイルにこの行があったため

$config['compress_output'] = TRUE;

質問者と同じエラーメッセージを受け取りました。その行を変更しました

$config['compress_output'] = FALSE;

その後、対処していた実際のエラーを確認できました。これが誰かを助けることを願っています!

于 2013-02-02T01:00:40.700 に答える