php 数组接口,php – 有关数组接口集合的array_map?

我有一个名为Collection的类,它存储相同类型的对象.

Collection实现了数组接口:Iterator,ArrayAccess,SeekableIterator和Countable.

我想将一个Collection对象作为数组参数传递给array_map函数.但这失败了,错误

PHP Warning: array_map(): Argument #2 should be an array

我可以通过实现其他/更多接口来实现这一点,以便将Collection对象视为数组吗?

解决方法:

array_map()函数不支持Traversable作为其数组参数,因此您必须执行转换步骤:

array_map($fn, iterator_to_array($myCollection));

除了迭代集合两次之外,它还会产生一个之后不会使用的数组.

另一种方法是编写自己的地图功能:

function map(callable $fn)

{

$result = array();

foreach ($this as $item) {

$result[] = $fn($item);

}

return $result;

}

更新

根据您的用例判断,您似乎对地图操作的结果不感兴趣;因此使用iterator_apply()更有意义.

iterator_apply($myCollection, function($obj) {

$obj->method1();

$obj->method2();

return true;

});

标签:array-map,php,arrays,iterator

来源: https://codeday.me/bug/20191007/1866247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值