2013-10-12 102 views
-1

讓我職位的代碼有問題:

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="";首先聲明,再往它是在if條件下使用。我想了解它的邏輯,爲什麼我可以這樣寫。

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

在PHP你並不需要聲明變量,你需要把自己的前價值觀。 –

+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; 

...然後自然就成爲這樣的:

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

我們經常需要在條件範圍外聲明一個變量,以便我們可以在條件範圍之後再次使用該變量。例如,當在一個循環內進行計數,並且在循環完成後,我們要顯示計數變量。

關於$var=header("Location: link.php");,header函數返回void,因此使用var來存儲結果是無用的,但對於其他非void函數來說它有時候非常方便。

+0

這在PHP中並不是真的,因爲不存在「聲明」變量這樣的事情。在正確的時間初始化一個變量可能很重要,但這並不是一個嚴格的範圍問題。 – IMSoP

相關問題