很多时候,通过PHP手册,我们就可以找到关于数组元素应用回调函数的一些函数。这也是为啥PHP这么神奇的地方。
我们很容易想到这个函数 array_map
var_dump(array_map( function($v){
if( preg_match('/^[a-zZ-a]/',$v) )
{return $v.' 成功';}
return $v;
},['ceshi1','23'] ) );
测试结果:array(2) { [0]=> string(13) "ceshi1 成功" [1]=> string(2) "23" };
下面通过迭代器方式实现
class MapIterator extends ArrayIterator
{
//函数存储站
private $callback;
//构造函数
function __construct( array $arrayList,callable $callback){
parent::__construct( $arrayList );
$this->callback = $callback;
}
function current()
{
parent::current();
return call_user_func($this->callback, $arrayList);
}
}
//下面开始测试
$b=[];
$hehe = function( $a)
{
if( preg_match('/^[a-zZ-a]/',$a) )
global $b;//使用全局 不然每次初始化了。
{
$b[]=$a.' 成功';
}
$b[]=$a;
}
$map = new MapIterator( ['ceshi1','23'],$hehe );
while( $map->valid() )
{
$map->current();
$map->next();
}
var_dump($b);
//测试结果 :array(3) { [0]=> string(13) "ceshi1 成功" [1]=> string(6) "ceshi1" [2]=> string(2) "23" }
网友评论