2012-01-17 63 views
-2

我猜這已被問過。我知道在PHP中,你可以改變一個變量的數據類型,就像這個例子。一個php變量可以同時保存多種數據類型嗎?

$var = '3'; 

if (is_string($var)) 
    echo "variable is now string <br />"; 

$var = $var+1; 

if (is_int($var)) 
    echo "variable is now integer <br />"; 

但是,變量是否可以在一個時間點上保存多個數據類型?

+1

你的意思是一個字符串和一個int在同一時間?不,絕對不是。 – 2012-01-17 08:05:56

+0

未檢查源代碼,我假設'PHP'使用某種表示緩存,以便如果一個變量作爲字符串訪問,則字符串表示將被緩存,並且如果稍後以整型形式訪問它,變量將有兩個表示緩存。但是,除此之外,我看不出具有多種數據類型的變量是如何表現出來的。 – zrvan 2012-01-17 08:08:25

回答

0

如果您在代碼中添加的var_dump這樣的:

$var = '3'; 
var_dump($var); 
if (is_string($var)) 
    echo "variable is now string <br />\n"; 
$var = $var+1; 
var_dump($var); 
if (is_int($var)) 
    echo "variable is now integer <br />\n"; 

你的輸出將是:

string(1) "3" 
variable is now string <br /> 
int(4) 
variable is now integer <br /> 

這表明一個簡單的規則是PHP可以讓你以任何方式使用變量你喜歡和更改它代表的數據類型當你在你的代碼中使用。

0

編號PHP只是解釋它喜歡的值,因爲它是弱類型的。

0

不是。一個變量一次只能保存一個值。當然,該值可以是一個數組或對象,它本身可以保存多個值,但變量本身仍然是對單個對象的引用。

0

一個數組可以包含許多任何類型的項目。

$array = array("string",1,false,fopen(__FILE__,"r")); 
var_dump($array); 

但作爲一個變量本身,它可以只是一種類型 - array

雖然我在這個問題上看不到任何理由或想象任何理由要問這個問題。一次有幾種類型的變量有什麼意義?可能只是不清楚的問。

0

是的。如果是數組或對象,則變量可以是一個持有者,用於多個數據類型和單個時間點的值。

+0

不,變量保存的類型*當時是一個數組或對象,並且仍然只有一種類型。 – 2012-01-17 08:23:05

+0

這是語義。這個問題不是很清楚。 – 2012-01-17 08:26:33

相關問題