2013-10-12 7 views
-1

날 문제의 코드를 게시하자 $var=""; 먼저 선언 그렇다면 왜 더 아래로는 if 상태로 사용됩니다

session_start(); // some text 
$Var = ""; 
if (isset($_SESSION['id'])) { 
    // some conditions 
    $userid = $_SESSION['id']; 
    $username = $_SESSION['username']; 
    $var = some links or text here ; 
} 
else 
{ 
    $var = link or text here; 
} 

질문이다. 나는 그 논리를 이해하기를 원하며 왜 그렇게 쓸 수 있을까요?

$var=header("Location: link.php"); 
+1

당신이 자신을 넣어야하기 전에 변수를 선언 할 필요가 없습니다 로 값. –

+0

문자열을 연결하려는 경우 일반적으로 사용됩니다. –

+0

Linux $ var 및 $ Var를 사용하는 경우 변수 이름에 소문자 또는 대문자를 사용하지 마십시오. – Lefsler

답변

1

PHP는 일부 언어에서 사용하기 전에 변수를 "선언"할 필요가 없지만 코드를 작성할 때 의도를 표현하는 것이 유용 할 수 있습니다. 변수를 할당하기 전에 변수를 사용할 수 있습니다 (값은 null입니다). 실수로 잘못 입력했기 때문에 IDE와 코드 검사기 및 PHP 자체가 경고로 표시됩니다 변수 이름.

코드 섹션 시작 부분에 변수에 값을 할당하면 루프가 추가 된 경우와 같이 코드가 재 배열 된 경우 값이 누출되지 않습니다. 이 시작할 수 있습니다

if (some_check($something)) 
{ 
    $var = 'something'; 
} 
echo $var; 

을하지만 그것을 확장이 나중에 :

foreach ($some_array as $some_item) 
{ 
    if (some_check($some_item)) 
    { 
     $var = 'something'; 
    } 
    echo $var; 
} 

여기에 미묘한 버그가 $var'something' 처음으로하게되면, 후속 실행에 "삭제 없다"없구요이다 루프 라운드. 변수를 빈 문자열로 "초기화"하면 어떤 의미에서 "시작하고 끝낼 때"명시 적으로 나타납니다.

그래서 대신이 시작 될 수 있습니다 다음 자연이된다

$var = ''; 
if (some_check($something)) 
{ 
    $var = 'something'; 
} 
echo $var; 

... :

PHP에서
foreach ($some_array as $some_item) 
{ 
    $var = ''; 
    if (some_check($some_item)) 
    { 
     $var = 'something'; 
    } 
    echo $var; 
} 
0

조건 범위 외부의 변수를 선언해야 조건 범위 뒤에 변수를 다시 사용할 수 있습니다. 예를 들어 루프 내부에서 계산할 때 루프가 완료된 후 count 변수를 표시하려고합니다.

에 대해서는 header 함수가 void를 반환하므로 var를 사용하여 결과를 저장하는 것은 쓸모가 없지만 다른 비 공백 함수의 경우 때때로 매우 편리합니다.

+0

변수를 "선언하는"것과 같은 것이 없기 때문에 PHP에서는 그렇지 않습니다. 변수를 적시에 * 초기화하는 것이 중요 할 수 있지만, 엄격하게 범위의 문제는 아닙니다. – IMSoP

관련 문제