2012-09-05 296 views
3

我試圖獲取變量類型,但我不知道爲什麼,總是說變量是一個字符串。從對象獲取變量類型

這是我的目標:

$問題

stdClass Object 
     (
      [reply_id] => 8 
      [q_key] => 35BBs2xy1346230680 
      [answer] => 1 
     ) 


echo $question->answer." is a ".gettype($question->answer); 

輸出是:

1是一個字符串

但1是一個整數...

我在做什麼錯?

+1

你想知道這個類型在技術上是一個整數還是標量值只包含數字?另外,請使用'var_dump()'打印對象。 –

+2

如果它說它是一個字符串,那麼它是一個字符串。數據來自哪裏,你認爲它不是一個字符串? – deceze

回答

0

這是因爲你分配這個變量的方式。這裏的例子:

$a = 1; 
var_dump($a); 
$a = "1"; 
var_dump($a); 

這將產生:

int(1) 
string(1) "1" 
0

你沒有把它定義爲一個字符串,而不是把它定義是這樣的:

$question->answer = 1; 

您需要定義它因此:

$question->answer = "1"; 

PHP a也可以使用隱式變量,因此它可以自動將數字答案聲明爲整數。爲了解決這個問題,如果$var = "1",其定義是這樣的:

$question->answer = strval($var); 
3

如果該值是從$_GET$_POST然後將其作爲一個字符串自動處理通過。如果它是從mysql query it is being returned as a string返回的。您可以使用settype將其設置爲一個整數。話雖如此,PHP相當於liberal when it comes to types及其值。的setType的

實施例:

<?php 
$foo = "5bar"; // string 
$bar = true; // boolean 

settype($foo, "integer"); // $foo is now 5 (integer) 
settype($bar, "string"); // $bar is now "1" (string) 
?> 

注意從類型:

PHP不需要(或支撐)在變量聲明明確的類型定義;變量的類型由使用變量的上下文確定。也就是說,如果將字符串值分配給變量$ var,則$ var變成一個字符串。如果一個整數值被賦值給$ var,它就變成了一個整數。

PHP的自動類型轉換的一個例子是加法運算符'+'。如果任一操作數是一個浮點數,那麼這兩個操作數都被評估爲浮點數,結果將是一個浮點數。否則,操作數將被解釋爲整數,結果也將是一個整數。請注意,這不會改變操作數本身的類型;唯一的變化就是如何評估操作數以及表達式本身的類型。

1

即時通訊使用EZsql獲取對象...我沒有定義變量。我認爲is_numeric()函數將完成這項工作:)

謝謝!