beginnerLee
72
2020-09-03 03:17:43
2
422

php겸 while문 조건에 대해 여쭤보고싶어요..


책 보면서 공부 중이구요..

주사위 4개를 이용해

전부 6이 나오면 종료하는 while문을 생성 하다가 의문점이 생겨서 여쭤보고싶습니다.

주석으로 막은 while문 말구 밑에있는 while에서

roll1이 6이 아니고 roll2가 6이 아니고 roll3이 6이아니고 roll4가 6이 아니라면 계속 진행되야하는 거 아닌가 싶은데 그냥 중간에 끝납니다. &&말고 &이나 and써도 안되더라구요

php 처음 시작하고  재밌긴 한데 기본문법에서 궁금증이 생겨 여쭤봅니다!

<?php
        $roll1 = 0;
        $roll2 = 0;
        $roll3 = 0;
        $roll4 = 0;
        $count = 1;
        //while (($roll1 != 8) && ($roll2 != 8) && ($roll3 != 8) && ($roll4 != 8)){
        while (($roll1 != 6) && ($roll2 != 6) && ($roll3 != 6) && ($roll4 != 6)){
            $roll1 = rand(1, 6);
            $roll2 = rand(1, 6);
            $roll3 = rand(1, 6);
            $roll4 = rand(1, 6);
            echo '<p>주사위를 굴려서 나온 숫자 : ' . $roll1 . ', ' . $roll2 . ', ' . $roll3 . ', ' . $roll4 . '</p>';
            if (($roll1 == 6) && ($roll2 == 6) && ($roll3 == 6) && ($roll4 == 6)){
                echo '<p>게임끝!</p>';
                break;
            }
            else{
                echo '<p>땡!</p>';
                $count = $count + 1;
            }
        }
        echo $count;
    ?>


0
  • 댓글 2

  • mirheeoj
    12k
    2020-09-03 06:42:12

    돌려보니 말씀하신 대로 동작합니다. 즉, 넷 다 6이 아닌 경우 루프가 진행돼요. 

    하지만 하나라도 6이 나오는 순간에는 false가 되니 루프가 끝나죠. 

    원하시는 조건은 아마 이게 아닐까 합니다.

            while (($roll1 != 6) || ($roll2 != 6) || ($roll3 != 6) || ($roll4 != 6))



    근데 애초에 저 로직에서는 굳이 while에서 저걸 체크할 필요가 없습니다. while(1)만 해도 원하는대로 동작할 겁니다. if문에서 분기를 따로 하니까요. 

  • beginnerLee
    72
    2020-09-03 14:42:25

    mirheeoj님 감사합니다.

    설명을 듣고보니 그렇네요 ㅠㅠ

  • 로그인을 하시면 댓글을 등록할 수 있습니다.