我正在使用PHP中的array_filter来拆分包含多个数组的数组,当名为type
的键的值与特定字符串匹配时。下面是示例代码:
示例数组
$arr[] = Array (
[0] => Array ( [type] => Recurring ... )
[1] => Array ( [type] => Single ... )
)
函数
function recurring($value)
{
return ($value['type'] == 'Recurring');
}
function single($value)
{
return ($value['type'] == 'Single');
}
分割数组
$recurring = array_filter($arr, 'recurring');
$single = array_filter($arr, 'single');
这个方法可以运行,但我想知道是否有一种简化的方法,以便在未来创建其他过滤数组时不需要为每个数组创建一个新函数。
我已经开始使用闭包设置单个函数,但是我不确定如何做。有什么想法吗?
function key_type($value, $key, $string) {
return $key == 'type' && $value == $string;
}
$recurring = array_filter($arr,
key_type('Recurring'), ARRAY_FILTER_USE_BOTH);
$single = array_filter($pricing,
key_type('Single'), ARRAY_FILTER_USE_BOTH);
array_filter($arr, key_type('Recurring'), ...
- 这当然行不通,因为key_type('Recurring')
是一个函数调用,而不仅仅是对函数的引用。在这种情况下,use
关键字非常有帮助,http://php.net/manual/en/functions.anonymous.php#example-165 - CBroeuse
关键字。我会发布一个答案。 - Cave Johnson