200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php判断字符是否在某个数组_php:如何快速在数组array中找出以某字符串开头的值...

php判断字符是否在某个数组_php:如何快速在数组array中找出以某字符串开头的值...

时间:2022-01-08 08:52:34

相关推荐

php判断字符是否在某个数组_php:如何快速在数组array中找出以某字符串开头的值...

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。