列表理解(python)和数组理解(php)?
Posted
技术标签:
【中文标题】列表理解(python)和数组理解(php)?【英文标题】:List comprehension (python)and array comprehension (php)? 【发布时间】:2011-08-05 14:07:56 【问题描述】:>>> lst = ['dingo', 'wombat', 'wallaby']
>>> [w.title() for w in lst]
['Dingo', 'Wombat', 'Wallaby']
>>>
在 python 中,有一些简单的方法来处理列表理解。
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();
看起来代码不像我想象的那么简单?
【问题讨论】:
吹毛求疵:list
是一个非常无用的名称,并且会影响内置函数。
【参考方案1】:
您可以将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
)
编辑:OP 的示例代码
$arr = array_map('ucwords', array('dingo', 'wombat', 'wallaby'));
print_r($arr);
输出:
Array
(
[0] => Dingo
[1] => Wombat
[2] => Wallaby
)
【讨论】:
闭包是匿名函数。更多信息:php.net/manual/en/functions.anonymous.php 它不是 closure,因为它不会从外部“捕获”变量。只是一个匿名函数。 为什么它叫匿名? :) ,对不起,我真的需要你理解而不是阅读长文档。谢谢 @IEnAk:声明function foo($x) return $x;
会创建一个绑定到名称 foo
的函数。函数字面量或匿名函数 function ($x) return $x;
本身没有名称。当然,您可以将它分配给一个变量,这样您就有一个引用该函数的名称,但它不需要一个。
这比普通的foreach
快吗?【参考方案2】:
您没有 PHP 的数组解析。你确实有像 array_walk()
这样的函数,类似于 python 的 map()
函数。
【讨论】:
【参考方案3】:array_map()
和 array_filter()
【讨论】:
以上是关于列表理解(python)和数组理解(php)?的主要内容,如果未能解决你的问题,请参考以下文章