Python 的列表推导与 PHP 的数组推导?

5 投票
3 回答
4023 浏览
提问于 2025-04-16 15:44
>>> 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
)

撰写回答