do-while(false) 私の場合
do {
//
if ($error) {
break;
}
//
} while (false);
【 参考URL 】
try~catch使うほどじゃないけどgotoは嫌だってときのための便利な書き方
do-while(false) を見つけたときの雑感
PHP マニュアル - do-while
(まず、このテクニックのネーミングが欲しいですが、
今回のみ仮称として「ダミーブロック」とします。)
ダミーブロックは私もよく使いますが、書き方が上記とは違います。
無限ループのリスク?
do-while(false)
は、false
を true
と書き間違えると、
無限ループの可能性があります。
(0を1と書き間違えても同じ。)
また、最初は正しく書いていても、別の置換で
false → true
と うっかり書き換わることも なくはないです。
夜 寝ているときに、
「ダミーブロックで true
と書いちゃったかもしれない 」
と不安になることも ありえます。
(考えすぎと言われれば それまでですが )
別の記述法1
do-while(false)
の替わりに、
私は しばらく下記を使っていました。
for ( $i = 0; $i <= 0; $i++ ) {
//
}
for文なので、最初から1回のみループすることが確定しています。
ただ for ( $i = 0; $i <= 0; $i++ ) {
の部分が
長いなぁとは思っていました。$i
も3回も書かなきゃだし。
しかも $i
のどれか1ヶ所を $ii
とか $j
に書き間違えたら、
これも無限ループになってしまいます。
なので、無限ループになりようがない
別の書き方を模索していました。
別の記述法2
最近 採用しているのが、以下の記述です。
foreach ( array(0) as $dummy ) {
//
}
array(0)
の要素数が1つなので、1回のみループします。
これは さすがに、間違っても無限ループにはならないと思います。
※ array(0)
です。array()
ではありません。
ただ as $dummy
の部分が邪魔です。
$dummy
は使わないから、これを消せれば完璧なのですが。
as 0
とか as null
とか試しましたがダメでした。
ちなみに as array()
とすると、
T_PAAMAYIM_NEKUDOTAYIM
という見慣れないエラーが出ます。
Author And Source
この問題について(do-while(false) 私の場合), 我々は、より多くの情報をここで見つけました https://qiita.com/kyotoisalsosnownight/items/6c79ed86f7ae47230a33著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .