array_mapにArrayAccessを実装したオブジェクトを利用する方法はありますか?
ArrayAccessを実装すれば、自作のクラスのインスタンスオブジェクトを配列のように利用することができそうです!
しかし、array_map
などの配列系の標準函数には利用できませんでした。
以下のコードでは簡単のために、SPLに含まれるArrayIteratorを例にとります。
<?php
array_map('gettype', array_map('floatval', [1, 2, 3]));
// ["double", "double", "double"]
array_map('gettype', array_map('floatval', new ArrayIterator([1, 2, 3])));
// PHP Warning: array_map(): Argument #2 should be an array in /tmp/array_access.php on line 5
// PHP Warning: array_map(): Argument #2 should be an array in /tmp/array_access.php on line 5
自作のオブジェクトやArrayIterator
などのArrayAccess
を実装したクラスのインスタンスを配列と区別なく利用したいのですが、何か解決策はありますか?
タイプヒントでarray
を期待する箇所で利用できると、もっと嬉しいです。