PHP - 型別轉換



PHP 被稱為動態型別語言。PHP 中變數的型別會動態變化。此特性在 PHP 中稱為“型別轉換”。

在 C、C++ 和 Java 中,您需要在後續程式碼中使用變數之前宣告變數及其型別。變數只能取與宣告型別匹配的值。

在 PHP 中,既不需要也不支援顯式宣告變數的型別。因此,PHP 變數的型別由分配給它的值決定,而不是相反。此外,當變數被分配不同型別的值時,其型別也會發生變化。

示例 1

檢視 PHP 中以下變數賦值。

<?php
   $var = "Hello";
   echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;

   $var = 10;
   echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;

   $var = true;
   echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;

   $var = [1,2,3,4];
   echo "The variable \$var is of " . gettype($var) . " type" .PHP_EOL;
?>

它將產生以下輸出 -

The variable $var is of string type
The variable $var is of integer type
The variable $var is of boolean type
The variable $var is of array type

您可以看到 "$var" 的型別根據分配給它的值動態變化。PHP 的此特性稱為“型別轉換”。

示例 2

型別轉換也發生在表示式的計算過程中。在此示例中,包含數字的字串變數會自動轉換為整數以計算加法表示式。

<?php
   $var1=100;
   $var2="100";
   $var3=$var1+$var2;
   var_dump($var3);
?>

這是它的輸出 -

int(200)

示例 3

如果字串以數字開頭,則在執行計算時會忽略任何尾隨的非數字字元。但是,PHP 解析器會發出如下所示的通知 -

<?php
   $var1=100;
   $var2="100 days";
   $var3=$var1+$var2;
   var_dump($var3);
?>

您將獲得以下輸出 -

int(200)

PHP Warning:  A non-numeric value encountered in /home/cg/root/53040/main.php on line 4

型別轉換與型別轉換

請注意,PHP 中的“型別轉換”與“型別轉換”略有不同。

  • 在型別轉換中,PHP 會在必要時自動將型別從一種轉換為另一種。例如,如果將整數值分配給變數,則它將成為整數。

  • 另一方面,型別轉換髮生在使用者顯式定義他們想要轉換到的資料型別時。

示例

型別轉換強制變數用作特定型別。以下指令碼顯示了不同型別轉換運算子的示例 -

<?php
   $var1=100;
   $var2=(boolean)$var1;
   $var3=(string)$var1;
   $var4=(array)$var1;
   $var5=(object)$var1;
   var_dump($var2, $var3, $var4, $var5);
?>

它將產生以下輸出 -

bool(true)
string(3) "100"
array(1) {
  [0]=>
  int(100)
}
object(stdClass)#1 (1) {
  ["scalar"]=>
  int(100)
}

示例

也可以透過將變數括在雙引號字串中將其轉換為字串 -

<?php
   $var1=100.50;
   $var2=(string)$var1;
   $var3="$var1";
   var_dump($var2, $var3);
?>

在這裡,您將獲得以下輸出 -

string(5) "100.5"
string(5) "100.5"
廣告