2012-05-06 3 views
1

변수 $day에 if/elseif 문을 작성하려고합니다. 이 PHP와 관련된 HTML 코드에서 변수와 그 값을 정의했습니다. 나는이 페이지에 PHP 섹션을 붙여 넣을 것이다. 문제는 결과 페이지가 "$ day = 1"에 대한 응답 만 제공한다는 것입니다. 누구든지이 코드에서 일어날 수있는 오류를 알고 있습니까? 우리는 또한 두 개의 등호를 사용하여 시도했지만 더 심하게 만들었습니다!PHP에서/Elseif 문을 사용하는 경우

echo "<p>"; 
       if ($day = 1) { 
        echo "Sunday Funday! What COMMITMENT to going out!"; 
       } elseif ($day = 2) { 
        echo "The start of what's sure to be a rough week. Drink away your sorrows."; 
       } elseif ($day = 3) { 
        echo "Epic night! SO many themes at the bars!"; 
       } elseif ($day = 4) { 
        echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?"; 
       } elseif ($day = 5) { 
        echo "Thirsty Thursday!! It's close enough to the weekend... right?"; 
       } elseif ($day = 6) { 
        echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!"; 
       } elseif ($day = 7) { 
        echo "It's FRATurday! Go have some fun!"; 

      } 
+2

확실히 등호 2 개가 필요하다면 할당 = – jmort253

+2

/else를 구체적으로 사용 하시겠습니까? 이 경우 스위치를 사용하는 것이 더 좋습니다. – mfadel

+2

'=='를 사용해야합니다. "더 심하게 만든"것은 무엇을 의미합니까? – trutheality

답변

6

귀하는 (=)을 할당하고 있습니다. 논리적 평등 (==)이 필요합니다.

if ($day == 1) { 
    echo "Sunday Funday! What COMMITMENT to going out!"; 
} 

체크 아웃 comparisonlogical operators. 또한 switch() statement.

8

비교 ==을 사용하려는 경우 지정 =을 사용하고 있습니다.

할당은 오른쪽에서 무엇을 평가하므로

if ($day = 1) 

these rules에 기인하는

if (true) 

이 동일하다

if (1) 

와 동일 프로그램이 왜 그렇게 행동하는지 설명해야하며, 물론 프로그램을 수정하는 방법을 알고 있어야합니다. 당신이 switch 문을 사용하는 경우 그것은 더 나은 것 :

switch($day) { 
    case 1: 
     echo "Sunday Funday! What COMMITMENT to going out!"; 
     break; 
    case 2: 
     echo "The start of what's sure to be a rough week."; 
     break; 
    // etc etc 
} 
+0

두 개의 등호를 추가하면 전체 echo 문이 결과 페이지에서 사라집니다. – user1377549

+1

그러면 문제는 분명히 비교가 아니라 '$ day'가 테스트중인 값과 동일하지 않다는 사실입니다. 'var_dump ($ day)'를 사용하여 그것이 실제로 무엇인지 볼 수 있습니다. 어레이 맵 참조에 대해서는 – Jon

2

비교 연산자는 ==하지 =입니다.

$day_msg = array(
    1 => "Sunday Funday! What COMMITMENT to going out!", 
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.", 
    3 => "Epic night! SO many themes at the bars!", 
    4 => "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?", 
    5 => "Thirsty Thursday!! It's close enough to the weekend... right?" 
    6 => "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!", 
    7 => "It's FRATurday! Go have some fun!" 
); 
echo "<p>"; 
echo $day_msg[$day]; 
1

당신은 당신이 등호가 필요 첫번째 생각은 옳았다 위치 :

또한이 상황에서 깨끗이 조회 테이블 접근을 시도합니다.

2

당신이 체크 대상 조건의 긴 목록이있는 경우 모든 조건이

  if ($day == 1) { 
       echo "Sunday Funday! What COMMITMENT to going out!"; 
      } elseif ($day == 2) { 
       echo "The start of what's sure to be a rough week. Drink away your sorrows."; 
      } elseif ($day == 3) { 
       echo "Epic night! SO many themes at the bars!"; 
      } elseif ($day == 4) { 
       echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?"; 
      } elseif ($day == 5) { 
       echo "Thirsty Thursday!! It's close enough to the weekend... right?"; 
      } elseif ($day == 6) { 
       echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!"; 
      } elseif ($day == 7) { 
       echo "It's FRATurday! Go have some fun!"; 

     } 
6

처럼 만들고 싶어, 당신은 일반적으로/만약 다른 문장의 긴 체인을 쓰고 싶지 않아.

$map = array(
    1 => "Sunday Funday! What COMMITMENT to going out!", 
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.", 
    3 => "Epic night! SO many themes at the bars!", 
    4 => "...", 
); 

는 그런 다음 코드는 아주 간단하게 : 오히려 switch 블록 또는 심지어 array지도하려고합니다.

echo $map[ $day ]; 

(이상적으로 isset 확인을 사용을하지만 개발 단계에 대한 PHP는 영리하다 누락 된 항목에 대한 힌트를 줄 정도로 충분합니다. 입력 값이 이미 제한/어설트되어 있으면 아무 것도 필요하지 않습니다.)

+0

+1. –

관련 문제