php - 如何重写这个 php filterArray 函数以获得更好的性能

标签 php arrays function filtering

我在一个类中有一个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');

这更像是一个验证过程。有没有更好的方法来编写它并优化其性能?因为它用在性能至关重要的类中。

谢谢。

最佳答案

您没有指定是否需要维护 key 关联,如果不需要 key 关联您可以执行以下功能。

function filterArray($needle, $heystack, $always = array())
{
    return array_intersect(array_merge($needle, $always), $heystack);
}

关于php - 如何重写这个 php filterArray 函数以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18573621/

相关文章:

Javascript 函数不接受变量作为参数

php - 动态网站安全问题(PHP+MySQL)

PHP/MYSQL数组存储和检索问题

c - 无效的初始化程序 : While assigning value from struct to a struct array

java - 图像不显示..Java

javascript - 函数在变量定义之前返回

php - DOMPDF 卡在 Letter 纸张尺寸上

php - 为什么 Yii 操作在移动到 https ://时会出现 404 错误

PHP 数组 - 保存到 MySQL 时出现奇怪的数据

python - 使用列表中其他值的函数过滤 python 中的列表。