0
function test($matches)
{
    $fx = '';
    if(strpos($matches[0],"http://")===false)
    {
        $fx = "http://";
    }
    elseif(strpos($matches[0],"http:/")===false)
    {
        $fx = "http:/";
    }
    elseif(strpos($matches[0],"http:")===false)
    {
        $fx = "http:";
    }
    elseif(strpos($matches[0],"http")===false)
    {
        $fx = "http";
    }
    return $fx.$matches[0];
}

また

function test($matches)
{
    if(strpos($matches[0],"http://")===false)
    {
        return  "http://".$matches[0];
    }
    elseif(strpos($matches[0],"http:/")===false)
    {
        return "http:/".$matches[0];
    }
    elseif(strpos($matches[0],"http:")===false)
    {
        return "http:".$matches[0];
    }
    elseif(strpos($matches[0],"http")===false)
    {
        return "http".$matches[0];
    }
}

私は自分のスクリプトを書いてできるだけ少ないメモリを使用しようとしていますが、コードが見苦しく見えることがあります.

ありがとう。

4

1 に答える 1

2

どちらがより少ないメモリを使用するかに関しては、それらは同等であると思います(両方とも最悪の場合)。

ただし、実行時間に関しては、一致する条件が1つ見つかるとすぐに戻るため、2番目のものは最初のものよりも数分の1ナノ秒速く実行を終了します。Big-O の全体的な違いは一定であり、違いがないことは誰もが知っています: 最良の場合は O(3n) 対 O(n)、最悪の場合は O(3n) 対 O(3n) (従属$match[0] のサイズ)。しかし、これはすべて strpos() 関数の複雑さに大きく依存しています

読みやすくするために、それらは同等に書かれ、構造化されています。

于 2012-04-27T02:48:29.387 に答える