2012-04-30 2 views
-1

어쨌든 IF의 일부에서 정의 된 변수가 동일한 IF의 다른 부분에서 액세스 할 수 있습니까?IF에서 전역 변수를 사용할 수 있습니까?

예는 : 기능에서

if ($a == 1) 
{ 
    $b = "ABC"; 
} 
elseif ($a == 2) 
{ 
echo $b; 
} 

은 내가 글로벌 $ 변수를 사용하지만 IF-문에서 나는 잘 모릅니다.

이유는 내가 등록 페이지를 단계별로 만들고 있기 때문에 내가이 질문을하는 이유입니다.
즉, If 문을 여러 번 확인하고 마지막 단계에서 모든 IF에서 모든 변수를 수집해야합니다.

+0

예, 시도하지 않은 이유는 무엇입니까? 변수는 변수입니다 ... 반드시 많은 의미를 지니지는 않습니다. 'if-else' 문의 한 번에 하나의 브랜치 만 실행됩니다. 명령문이 두 번 실행되는 경우에만 의미가 있습니다. –

+1

왜 다른 변수에 같은 변수를 표시하려고하는지 이해할 수 없습니까? –

+0

단계별로 등록 페이지를 만들고 있습니다. 마지막 단계에서 모든 vars에 액세스 할 수 있기를 바랍니다. – xRed

답변

3

"글로벌"변수 당신이 그들을 이해하는 방법이 없습니다.
모든 PHP 변수는 실행 후 모든 PHP 스크립트에서 죽을 수밖에 없습니다.

요청간에 변수를 저장하려면 저장소가 필요합니다.
PHP sessions은 좋은 선택입니다.

-2
$b = Null 
if ($a == 1) 
{ 
    $b = "ABC"; 
} 
elseif ($a == 2) 
{ 
echo $b; 
} 
0

그럼 어떤 모양 $ a는 1 개 개만 가치가 없습니다 그것은 아마 1 또는 2 또는 뭔가 다른 경우는 1 다음 $ B = ABC과 결코 당신의 ELSEIF 상태에서 온다와 $ a는 다음 두 경우는 입력하지 않는다 첫 번째 조건에서는 yes이지만 조건 앞에 $ b를 정의 할 수 있습니다.

$b = "something"; 
if ($a == 1) 
{ 
    $b = "ABC"; // $b is ABC if $a = 1 
} 
elseif ($a == 2) 
{ 
echo $b; // output : something, if $a = 2 
} 
1

PHP의 IF 문은 이 아니며은 가변 변수 범위를 변경합니다 - 함수와 다릅니다. IF에서 수행하는 작업은 동일한 범위에 머물러있는 한 IF 외부에서 볼 수 있습니다. GLOBAL을 사용할 필요가 없습니다. 사실 글로벌 범위는 가능한 한 적게 사용해야합니다.

글로벌 문은 범위를 넓히기 때문에 PHP가 숨길 수있는 항목을 "볼"수 있습니다. 범위의 상호 작용이 항상 명확하지 않기 때문에 변수 범위 지정을 이해해야합니다. 훌륭한 PHP 문서를 읽어 보시기 바랍니다. 당신은 그것을 몇 번 읽고 그것을 클릭하기 전에 약간의 실험을해야 할 것입니다.

코드에 문제가있는 것은 표시되지 않는 루프 내부에 있지 않으면 if 문이 지점이기 때문에 $ b 값을 볼 수 없으며 다음 중 하나만 실행하게됩니다. 가지 결코 이상의 1

귀하의 예를 또 다른 문제는 당신이 문 경우 연결 사용하고이 훨씬 더으로 기록 될 것입니다 :

switch ($a) { 
    case 1: 
     $b = "ABC"; 
     break; 
    case 2: 
     # $b will ALWAYS be empty unless you set it BEFORE the switch OR 
     # you loop back to the switch AFTER $a=1 
     echo $b; 
     break; 
    default: 
     echo "i is not equal to 1 or 2"; 
} 

참조 : http://php.net/manual/en/control-structures.switch.php

이 양식은 읽기가 훨씬 명확하고 케이스 수가 늘어 나면 훨씬 더 간단합니다 (&).