具有匿名功能的Php array_walk用于过滤掉结果

时间:2015-11-24 19:39:08

标签: php closures anonymous-function array-walk

我有一个项目的大量时间记录,我想过滤除一个员工发布的所有时间记录。

array_walk($timeRecords, function($timeRecord, $index) use ($employee) {
    if ($timeRecord->employeeId != $employee->id) {
        unset($timeRecords[$index]);
    }
});

你可以看到我想要做的事情。你如何使用anon函数和闭包来做这个?显然,$ timeRecords没有在匿名函数中定义。感谢。

1 个答案:

答案 0 :(得分:0)

Calimero指出这是工作的错误工具。使用array_filter可以实现所需的效果。 Array_walk似乎是为了通过引用修改单个数组项而设计的。

这是如何实现我想要的。

$timeRecords = array_filter($timeRecords, function($timeRecord) use ($employee) {
    if ($timeRecord->EmployeeId == $employee->EmployeeId) {
        return $timeRecord;
    }
});