您的位置:首页 > 编程语言 > PHP开发

PHP array_filter函数的一点应用 获取二维数组中指的键值的结果

2014-03-09 22:11 253 查看
array array_filter ( array [, callback callback] )

array_filter() 依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

/**
* @name linq and 实现
* @param array $socure
* @param array $condition key: $socure中的key value: 和$socure中相对应的值相比较 全部为真才为真
* @return multitype:|boolean
*/
public static function WhereAnd($socure, array $condition) {

return array_filter($socure, function ($value) use($condition) {
$re = true;
foreach ($condition as $k => $v) {
if (!isset($value[$k]) || $value[$k] != $v) {
$re = false;
break;
}
}
return $re;
});
}

public static function WhereBitwise($socure, array $condition) {

return array_filter($socure, function ($value) use($condition) {
$re = true;
foreach ($condition as $k => $v) {
if (($value[$k] & $v) > 0) {
$re = false;
break;
}
}
return $re;
});
}

/**
* @name linq or 实现
* @param array $socure
* @param array $condition key: $socure中的key value: 和$socure中相对应的值相比较 存在为真就为真
* @return multitype:|boolean
*/
public static function WhereOr($socure, array $condition) {

return array_filter($socure, function ($value) use($condition) {
$re = false;
foreach ($condition as $k => $v) {
if ($value[$k] == $v) {
$re = true;
break;
}
}
return $re;
});
}


三个方法

1、第一个方法是通过array_filter 的特性,然后匹配$condition 这个数组中的键值对,将$condition 中的所有兼职通过&&筛选返回针对源数组筛选之后的结果。

2、第二个方法是将$conditon 中的键值对通过按位与的方式确定筛选结果

3、第三个方法是将$condtion 中的键值对通过|| 筛选确定筛选结果。

分享一点小小的技巧,省却简单的筛选下每次都要写foreach的烦恼,当然我更多应用的还是第一个方法.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: