列表理解(python)和数组理解(php)?

kn3*_*n3l 4 php python arrays arraylist

>>> lst = ['dingo', 'wombat', 'wallaby']
>>> [w.title() for w in lst]
['Dingo', 'Wombat', 'Wallaby']
>>> 
Run Code Online (Sandbox Code Playgroud)

在python中有一些简单的方法可以解决列表理解问题.

用php怎么样array('dingo', 'wombat', 'wallaby');

是否有数组理解或任何内置函数,或通常循环它?

编辑

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();
}
Run Code Online (Sandbox Code Playgroud)

看看代码不像我预期的那么简单?

Dog*_*ert 8

您可以使用array_map()匿名函数(闭包只有PHP 5.3+).

$arr = array_map(function($el) { return $el[0]; }, array('dingo', 'wombat', 'wallaby'));
print_r($arr);
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
    [0] => d
    [1] => w
    [2] => w
)
Run Code Online (Sandbox Code Playgroud)

编辑:OP的示例代码

$arr = array_map('ucwords', array('dingo', 'wombat', 'wallaby'));
print_r($arr);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => Dingo
    [1] => Wombat
    [2] => Wallaby
)
Run Code Online (Sandbox Code Playgroud)

  • 它不是*[封闭](http://stackoverflow.com/questions/tagged/closures?sort=votes&pagesize=50),因为它不会从外部"捕获"变量.仅仅是一个匿名函数. (4认同)
  • @IEnAk:声明一个`function foo($ x){return $ x; }`创建一个绑定到名称`foo`的函数.函数文字,或匿名函数`function($ x){return $ x; }`本身没有名字.当然,您可以将其分配给变量,因此您有一个引用该函数的名称,但它不需要一个. (4认同)