技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

php:如何快速在數(shù)組array中找出以某字符串開頭的值

作者:admin    時(shí)間:2012-6-6 21:41:19    瀏覽:

我寫了個(gè)函數(shù),可以實(shí)現(xiàn)在數(shù)組中找出以某字符串開頭的值。

public static function arrayContainsValueStartingBy($haystack, $needle) {
      $len = strlen($needle);
      foreach ($haystack as $hay) {
          if (substr($hay, 0, $len) == $needle) {
              return true;
          }
      }
      return false;
}

但我覺得它還有優(yōu)化的空間。

優(yōu)化建議一:

可以測評如下代碼看看是否有什么不同(它可能更差,視字符串大小而定),但是可以用strpos代替substr

public static function arrayContainsValueStartingBy($haystack, $needle) {
   foreach ($haystack as $hay) {
      if (strpos($hay, $needle) === 0) {
          return true;
      }
   }
   return false;
}

另外需要注意的是,盡可能早的停止迭代。

優(yōu)化建議二:

使用array_filter,不知道循環(huán)會(huì)否更快呢,看如下代碼:

$testArray = array('Hello',
                   'World',
                   'Aardvark',
                   'Armadillo',
                   'Honey Badger'
                  );
$needle = 'A';
class beginsWith {
    private $_needle = NULL;
    function __construct($needle) {
        $this->_needle = $needle;
    }
    public function filter($string) {
        return (strpos($string, $this->_needle) === 0);
    }
}
$matches = array_filter($testArray, array(new beginsWith($needle), 'filter'));
var_dump($matches);

標(biāo)簽: array  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */