2

我正在考虑在 PHP 中做这样的事情

function doSomething() { /* ... */ }

while(my_array[] = doSomething()) { }

而不是使用额外的变量:while(myValue = doSomething()) { myArray[] = myValue; }

是否使用 while 块什么都不做?如果不是 - 为什么?

4

2 回答 2

8

从技术上讲,大括号用于对while正文中的多个语句进行分组。你甚至不需要它们。例如,以下是完全有效的 PHP 代码:

while ($my_array[] = doSomething());
                                   ^

如您所见,这使用分号来终止while主体的语句(空语句)。演示

于 2012-12-16T23:24:44.407 回答
5

是的你可以。

$x = [];
while ($x[] = rand(0, 3)) { }
var_dump($x);

// array(4) {
//   [0]=>
//   int(4)
//   [1]=>
//   int(2)
//   [2]=>
//   int(2)
//   [3]=>
//   int(0)
// }

但是,如果您重新评估您要解决的问题,您可能会发现不同的方法或构造可能会证明更好,并且不需要将while构造简化为这个目的。

于 2012-12-16T23:18:35.030 回答