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

至于哪个会使用更少的内存,我认为它们是等效的(在最坏的情况下)。

但是,就它们的运行时间而言,第二个将比第一个快几分之一纳秒,因为一旦找到一个匹配条件,它将立即返回。总的来说,Big-O 的差异是恒定的,我们都知道这并没有什么区别:最好的情况是 O(3n) 与 O(n),最坏的情况是 O(3n) 与 O(3n)(取决于$match[0] 的大小)。但这一切都深深地依赖于 strpos() 函数的复杂性

为了可读性,它们的编写和结构也相同。

于 2012-04-27T02:48:29.387 回答