2012-03-28 62 views
1

我要比較兩個字符串哪一個是快strcasecmp()或等於運營商哪一個更快/更好strcasecmp()或等於運算符?

$str1='Hello'; 
$str2='hello'; 

//first approach 
if($str1 != strotolower($str2)) 
    //do some stuff here 

//second approach 
if(strcasecmp($str1,$str2) !=0) 
    //do some stuff here) 

哪種方法更好/更快的區分大小寫的平等?

+0

我建議使用'$ STR1 = strotolower($ STR2)' – hjpotter92 2012-03-28 10:27:21

+1

@ hjpotter92 - 爲什麼暗示較慢的!? – Polity 2012-03-28 10:29:37

+0

您打算如何處理大量數據? – JohnP 2012-03-28 10:29:47

回答

7

兩種方法都是在速度O(N),但是usign用strtolower分配一個新的字符串保存結果這反過來又增加內存壓力並降低性能

+0

謝謝@Polity,我會用第二種方法使用strcasecmp()函數 – Rahul 2012-03-28 10:37:23

2

你可以試試這個:

//********************************* 
    $start1 = microtime(true); 
    for ($i = 0; $i < 10000000; ++$i) { 
     if (strcasecmp('STRING1', 'string1') == 0) {} 
    } 
    $end1 = microtime(true); 
    echo 'Time1: ' . ($end1 - $start1) . '<br/>'; 
    //********************************* 
    $start2 = microtime(true); 
    for ($i = 0; $i < 10000000; ++$i) { 
     if (strtolower('STRING1') == strtolower('string1')) {} 
    } 
    $end2 = microtime(true); 
    echo 'Time2: ' . ($end2 - $start2) . '<br/>'; 
    //********************************* 
    $start3 = microtime(true); 
    for ($i = 0; $i < 10000000; ++$i) { 
     if (strtolower('STRING1') == 'string1') {} 
    } 
    $end3 = microtime(true); 
    echo 'Time3: ' . ($end3 - $start3) . '<br/>'; 
    //********************************* 

結果:

時間1:2.8758139610291

時間2:4.6863219738007

時間3:2.5191688537598

+0

請檢查這個sol。 http://www.alwaysgetbetter.com/blog/2013/09/29/comparing-strtolower-strcasecmp-caseinsensitive-string-checking-php/ – sgazelle 2015-03-22 10:27:53