Python 的列表推导与 PHP 的数组推导?
>>> lst = ['dingo', 'wombat', 'wallaby']
>>> [w.title() for w in lst]
['Dingo', 'Wombat', 'Wallaby']
>>>
在Python中,有一种简单的方法可以使用列表推导式。
那么在PHP中,像这样用 array('dingo', 'wombat', 'wallaby');
的话呢?
PHP有没有数组推导式或者其他内置函数,还是说通常需要用循环来处理它呢?
编辑
function addCaps( Iterator $it )
{
echo ucfirst( $it->current() ) . '<br />';
return true;
}
/*** an array of aussies ***/
$array = array( 'dingo', 'wombat', 'wallaby' );
try
{
$it = new ArrayIterator( $array );
iterator_apply( $it, 'addCaps', array($it) );
}
catch(Exception $e)
{
/*** echo the error message ***/
echo $e->getMessage();
}
看起来代码没有我想象中的那么简单?
3 个回答
2
在PHP中没有数组推导式这种东西。不过,你可以使用像 array_walk()
这样的函数,它的功能和Python里的 map()
函数有点像。
10
你可以使用 array_map()
这个函数,搭配匿名函数(闭包功能是从 PHP 5.3 版本开始支持的)。
$arr = array_map(function($el) { return $el[0]; }, array('dingo', 'wombat', 'wallaby'));
print_r($arr);
输出结果
Array
(
[0] => d
[1] => w
[2] => w
)
编辑:原作者的示例代码
$arr = array_map('ucwords', array('dingo', 'wombat', 'wallaby'));
print_r($arr);
输出结果:
Array
(
[0] => Dingo
[1] => Wombat
[2] => Wallaby
)