PHP隱式型別轉化

2021-10-21 11:10:10 字數 1279 閱讀 9944

首先看一下下面一段**:

$a

=true;$b

=false

;var_dump

(strlen($a

));// 1

var_dump

(strlen($b

));// 0

在使用strlen時布林變數會隱式轉化為字串,true轉化為字串1,false轉化為空字串,其轉化規則我們可以在php原始碼中找到答案。

// 非字串型別轉化規則

zend_api void

zend_make_printable_zval

(zval *expr, zval *expr_copy,

int*use_copy)

switch

(z_type_p

(expr)

)else

break

;case is_resource:

// ...省略

case is_array:

z_strlen_p

(expr_copy)

=sizeof

("array")-

1;z_strval_p

(expr_copy)

=estrndup

("array"

,z_strlen_p

(expr_copy));

break

;case is_object:

// ... 省略

case is_double:

*expr_copy =

*expr;

zval_copy_ctor

(expr_copy)

;zend_locale_sprintf_double

(expr_copy zend_file_line_cc)

;break

;default

:*expr_copy =

*expr;

zval_copy_ctor

(expr_copy)

;convert_to_string

(expr_copy)

;break;}

z_type_p

(expr_copy)

= is_string;

*use_copy =1;

}

資料型別 隱式型別轉化

減號 乘號 除號 取模等都是隱式型別轉換 把字串變成數字 加號 轉換成字串 自加 自減 轉換成數字 大於 小於 仔細看清楚是數字的比較還是字串的比較 取反嘆號!把右邊的資料通通轉成布林值 雙等號 轉成布林值,只看值不看資料型別 如果轉換不成功,就會出現nan not a number alert 2...

C 隱式類型別轉化

隱式類型別轉換 可以用 單個形參來呼叫 的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換 1 class person2 5bool issamename const person person 8private 9 string mname 10int mage 11 12int mai...

js隱式型別轉化及運算

只有基本型別的資料下能進行運算 所有引用型別的資料,需要運算時候 先需要轉化為基本型別資料 再運算 所有引用型別資料只能轉化為字串.最後再由字串轉為其他型別 js資料型別型別分為基本資料型別和復合資料型別 引用資料型別 基本資料型別 string boolean number null undefi...