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
- 站长推荐