我可以使用while在php中什么都不做吗?如果可能的话,这是一种好的做法吗?

我可以使用while在php中什么都不做吗?如果可能的话,这是一种好的做法吗?,php,loops,while-loop,Php,Loops,While Loop,我正在考虑用PHP做类似的事情 function doSomething() { /* ... */ } while(my_array[] = doSomething()) { } 而不是使用额外变量:while(myValue=doSomething()){myArray[]=myValue;} 使用while block做什么都不好吗?如果不是,为什么?是的,你可以 $x = []; while ($x[] = rand(0, 3)) { } var_dump($x); // arra

我正在考虑用PHP做类似的事情

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

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

使用while block做什么都不好吗?如果不是,为什么?是的,你可以

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

// array(4) {
//   [0]=>
//   int(4)
//   [1]=>
//   int(2)
//   [2]=>
//   int(2)
//   [3]=>
//   int(0)
// }
但是,如果您重新评估您试图解决的问题,您可能会发现另一种方法或构造可能会更好,并且不需要为此减少
,而
构造。

是的,您可以

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

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

但是,如果您重新评估您试图解决的问题,您可能会发现不同的方法或构造可能会更好,并且不需要为此目的减少
while
构造。

从技术上讲,花括号用于将
while
主体内的多个语句分组。你甚至不需要它们。例如,以下是完全有效的PHP代码:

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

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

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

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

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

我个人认为一个
的循环是不好的做法。@dudelgrincen是的,你可以做到;当你说PHP不接受第一种语法时,你是什么意思?对我来说很有用:
$x=array();而($x[]=rand(0,3)){}var_dump($x)还要注意,您展示的两个示例是不同的。没有额外变量的一个将在数组中包含错误值,而另一个不会出现错误…它工作:)我错过了一个括号…现在很晚了,也许我应该睡觉了…我编辑我的Qesti我个人认为一个
,而
循环打算什么都不做是不好的做法。@dudelgrincen是的,你可以做到;当你说PHP不接受第一种语法时,你是什么意思?对我来说很有用:
$x=array();而($x[]=rand(0,3)){}var_dump($x)还要注意,您展示的两个示例是不同的。没有额外变量的一个将在数组中包含错误值,而另一个不会出错…它工作:)我错过了一个括号…现在很晚了,也许我应该睡觉了…我将编辑我的qestionOh是的,我忘记了:)酷,但为什么?它在什么地方被记录了吗(我在php.net上没有找到任何东西)?它在和上被记录了-一个分号结束一个语句(将它与下一个语句分开),大括号允许你创建一个包含多个语句的语句。哦,是的,我忘了:)很酷,但是为什么?它在什么地方有文档记录吗(我在php.net上没有找到任何东西)?它在和上有文档记录-一个分号结束一个语句(将它与下一个语句分开),大括号允许您创建一个包含多个语句的语句。有人注意到我输出中的
4
吗?有人注意到我输出中的
4