Ja͢*_*͢ck 26
该array_map()函数不支持a Traversable作为其数组参数,因此您必须执行转换步骤:
array_map($fn, iterator_to_array($myCollection));
Run Code Online (Sandbox Code Playgroud)
除了迭代集合两次之外,它还会产生一个之后不会使用的数组.
另一种方法是编写自己的地图功能:
function map(callable $fn)
{
$result = array();
foreach ($this as $item) {
$result[] = $fn($item);
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
更新
根据您的用例判断,您似乎对地图操作的结果不感兴趣; 因此使用起来更有意义iterator_apply().
iterator_apply($myCollection, function($obj) {
$obj->method1();
$obj->method2();
return true;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13701 次 |
| 最近记录: |