PHP 5.5 的列表解析实现了没有?

2013-12-12 17:46:06 +08:00
 gaicitadie
记得PHP 5.5 没出来的时候看过一些文章说5.5版本将支持类似python的列表解析

[foreach($array as $i) if $i > 0 yield $i]

刚才我安装了php5.5.6,貌似还不支持这个语法
3541 次点击
所在节点    PHP
7 条回复
jybox
2013-12-12 18:41:08 +08:00
5.5 肯定没有
hardway
2013-12-12 19:57:25 +08:00
如果没有洁癖的话,其实很早就有一些实现了

https://code.google.com/p/php-lc/
Sunyanzi
2013-12-13 00:05:28 +08:00
我补充一下楼上二位的答案 ...

php 没有引入 List Comprehension 而是引入了更好的 Generator Expression ...

事实上这也是 php 5.5 的核心功能 ... 它拥有比列表解析更好的内存使用方式和更高的效率 ...

列表这个东西有的时候并不像你想象那样 ...

放开只有数组和迭代器可以遍历的思想 ... 试着去迎接新事物吧 ...

当然如果你问的有是什么简单的语法可以生成一个能够使用 Array 类函数直接操作的数组的话 ...

答案是没有 ...

最后 ... 根据你在顶楼的代码给你写了个例子如下 ... 不难 ... 看不懂的话我再解释好了 ...

<?php
function arr() {
foreach( range( 1, 5 ) as $i ) if ( $i > 0 ) yield $i;
}

/* arr() is NOT an array but a generator ... */
foreach( arr() as $a ) echo $a;
Qshen
2013-12-13 00:43:14 +08:00
别用python的方式去思考PHP
5.5有类似的东西 但是不是跟python一致的实现 感觉更clear一些
bombless
2013-12-13 01:23:05 +08:00
呃、原来有些人叫列表推导有些人叫列表解析……
一时都没习惯楼主这种叫法……
bombless
2013-12-13 01:25:18 +08:00
@Sunyanzi 楼主应该就是想要个糖……而不是想要个lazy的东西
bombless
2013-12-13 01:34:11 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX