- ベストアンサー
PHP whileの意味を知りたい
- PHPでのwhile文の意味と使い方について教えてください。
- while文は、指定した条件が満たされている間、繰り返し処理を行うための制御構造です。
- while文は条件式を評価し、その結果が真である限り、繰り返し実行されます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
while(条件式){ //処理 } 質問にあるように、この通りではあります。 ただ、『条件式』と言う言葉が、義務教育で慣れ親しんだ数学の『式』と繋がって、等号や不等号がないと式とはちょっと違いますよね。 条件式ではなく、条件と説明される場合もあったりします。 誤解を招きやすいですよね。 whileにおける括弧内の条件とは、条件にあるものが『True』と評価されたときと言うのが正しいです。 等号や不等号のある式を入れた場合は、その式の条件が満たされる場合はTrueと評価され、満たされなければFalseとなりループ処理は終了します。 条件を満たしている間繰り返すのがwhileと言うのはご存じの通りです。 while(True){ //処理 } このように書くと条件は常にTrueとなるので、無限にループされるということです。 ただ、phpでは変数の型や評価について曖昧なので、意図した結果と異なることもあります。 つまり、Trueと評価されるものと、Trueそのものは違うと言うことです。 この場合、以下のように記述して確認すべきだと思います。 //結果を見やすくするために追加 eho '<pre>'; while(条件){ //型と値を取得する関数 var_dump(条件); //処理 } 条件の変数の型、値が確認できます。 ループに時間がかかったり、終了しない場合であれば、while内でbreakして強制的に処理を終了させるようにしましょう。 この回答からキーワードを使って検索しても答えは出ると思いますが、自分で結果を確認して理解した方が良いです。 $input=trim(fgets(STDIN)); こちらについては、単純にそれぞれの関数のヘルプを見たら良いと思います。 あえて言うなら、STDINよりfgetしたものをtrimして$inputに代入する。 phpはマニュアルにかなり詳しく情報があるので、見てみると良いですよ。
その他の回答 (2)
- t_ohta
- ベストアンサー率38% (5238/13705)
while($input){} の場合、$inputという変数に何らかの値が入っていた場合は条件式が「真」になり、空っぽなら「偽」になります。(但し 0 を入力すると「偽」と判定されるので注意が必要) 例示されているプログラムだと、 最初のSTDINの入力で何らかの値が入っていた場合はループに入ります。 そして$inputの中身を$arrayという配列に入れて、再びSTDINを受け取ります。 STDINの入力で何らかの値が入っていた場合はループが継続し、Enterだけ押された時は$inputが空になるのでループが終了します。 $input=trim(fgets(STDIN)); についてですが、trim()関数は引数として与えられた文字列の前後にある空白や改行文字を取り除く関数です。 STDINからの入力は、入力者が値を入力した後のEnterまでを入力値として渡ってくるので、不要な改行文字を取り除く事が目的でしょう。
お礼
詳しく教えて下さってありがとうございました。 あーそういう意味かと理解出来ました。
- maiko0318
- ベストアンサー率21% (1483/6969)
whileは条件式が真の時ループするわけですが、 0を偽、それ以外を真とするということがあります。 ので、0を入れるまでという意味になります。 trim(fgets(STDIN));は STDINから取り込んだ値には最後に打ち込んだEnterキーも 含まれていますので、それを取り除くということになります。
お礼
詳しく教えて下さってありがとうございました。
お礼
初心者の私でも理解出来るような解説をありがとうございました。