-4

サフィックスを作成しようとしています(名前は私が作成したものです)。URLエクスプローダは以下です..

private function explode_url() {

    if (!empty($this->suffix) and empty($is)) {
                                             // look here  ------V
        $url = explode('/', rtrim($_GET['url'], $this->define_suffix())); 
    } else {
        $url = explode('/', trim($_GET['url'], '/'));
    }
    $str = '';
    foreach ($url as $key => $value) {
        if ($key >= 2) {
            $str = $str . '/' . $value;
        } else {
            $data[] = $value;
        }
    }
    $data[] = trim($str, '/');
    foreach ($data as $data) {
        if (!empty($data)) {
            $result[] = $data;
        }
    }
    return $result;
}

そして、これが接尾辞を定義する関数です。

private function define_suffix() {
        $count = count($this->explode_url()); // <------ look here
        $count = $count - 1;
        $keys = array('cnt', 'mtd', 'args');
        return $this->suffix[$keys[$count]];
    }

実際には機能は良好ですが、問題があります。無限ループがあります。どうすればこれを逃れることができますか?

編集: 出力:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 130968 bytes) in /var/www/cleanmvc/boot.php on line 85

関数は相互に呼び出し、無限ループを引き起こしています。それが私が助けを必要としているものです。

4

1 に答える 1

-1

ループをエスケープするキーワードはbreak. ループ内にネストされている場合は、オプションのパラメーターを渡すことで、子ループから複数のループを分割できます。break(2)- 2 つのレベルから抜け出します。

あなたの無限ループはここにあります:foreach ($data as $data) {

于 2013-07-03T19:47:32.280 に答える