技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

php:如何快速在数组array中找出以某字符串开头的值

作者:admin    时间:2012-6-6 21:41:19    浏览:

我写了个函数,可以实现在数组中找出以某字符串开头的值。

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

但我觉得它还有优化的空间。

优化建议一:

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

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

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

优化建议二:

使用array_filter,不知道循环会否更快呢,看如下代码:

$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);

标签: array  
  • IT热文
  • 站长推荐