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 に答える