Skip to main content
 首页 » 编程设计

php之for & while循环条件比较

2025年05月04日19yyy_WW

我写的 PHP 中的 for 循环

foreach($vertex['neighbours'] as $n_vertex) 

是不是类似于下面Python中的for循环

for n_vertex in vertex['neighbors']: 

类似地,我在 PHP 中使用了 While 循环

while(!empty($my_queue)) 

是不是类似于下面Python中的while循环

while my_queue: 

如果不是,那么在 PHP 之后的 Python 中 for 和 while 循环的正确版本是什么。

请您参考如下方法:

是的,这些很相似。

它们并不完全相同,但在大多数代码中差异并不重要。*

并且直接使用 my_queue 作为测试,而不是 empty 方法/函数,是执行此操作的 Pythonic 方式,如 PEP 8 中所推荐:

For sequences, (strings, lists, tuples), use the fact that empty sequences are false.

所以,你做的一切都完全正确。

当然在某些情况下,使用 list comprehension或生成器表达式(在 PHP 中没有直接类比)可能比 for 语句更简洁或更易读,但您永远不需要使用它们。


* 首先,Python for 循环创建一个 iterator从源头开始,然后一遍又一遍地调用 next(it) 直到引发 StopIteration,这与 PHP 中隐藏的情况非常不同。除非您使用非常奇怪的类型,或者试图在迭代期间改变您正在迭代的对象,否则您永远不会注意到其中的区别。其次,在 Python 中,与 PHP 不同,my_queue 理论上可以是可迭代的东西,但不是序列,如迭代器——在这种情况下 while my_queue: 将不起作用.但是,对于您命名为 my_queue 的内容,这不太可能。