【发布时间】:2013-09-05 14:04:35
【问题描述】:
我在一个类中有一个 filterArray 方法,用于过滤出基于另一个数组的数组:
function filterArray($needle, $heystack, $always = array())
{
foreach($heystack as $k => $v)
{
if( !in_array($v, $needle) && !in_array($v, $always) )
unset($heystack[$k]);
}
return $heystack;
}
用法:
$chars = array('l', 'J', 'F');
$keys = array('d','D','j','l','N','S','w','z','W','F','m','M','n','t','L','o','Y','y','a','A','c','r','e','T');
$keys = filterArray($chars, $keys, array('z'));
请注意,$always 是一个应始终存在且不应被过滤掉的项目数组。 key的结果是:
$keys = array('l', 'J', 'F', 'z');
这更像是一个验证过程。有没有更好的方法来编写它并优化它的性能?因为它用于性能至关重要的类中。
谢谢。
【问题讨论】:
-
in_array很慢,使用链表 -
@DevZer0 那是 PHP >= 5.3 我的代码需要 5.2+
标签: php arrays function filtering