php運算時預設的型別轉換

2022-07-15 12:21:10 字數 3021 閱讀 3723

php屬於弱型別語言,使用資料時無需指定其資料型別。對於學c語言入門的我,剛剛接觸時感覺很神奇,但是隨之而來的也有煩惱。

總結一下php中預設的型別轉換,按照運算子型別,只總結能夠自動做型別轉換的運算子,不能夠轉換的運算子在此不做羅列,關於運算子優先順序,稍後會有單獨的文章總結。

只要陣列有乙個字串型別的鍵,其餘鍵都轉換成字串;沒有鍵,或者鍵都為數字,所有鍵轉換成整形,浮點數只舍不入,無下標的鍵為前乙個下標加1

/*

所有鍵型別轉換成字串

*/$arr = array('wolf', 'a'=>'hippo', '1'=>'tiger', 1=>'panda', '20'=>'elephant', '02'=>'cock', '2.0'=>'dog', 3.3=>'pangolin');

var_dump($arr[02]);//

null, 找$arr[02]即$arr[2]轉換成$arr['2'],陣列沒有下標為'2'的元素

var_dump($arr['1']);//

panda, 'tiger'和'panda'的下標都為'1',後者把前者覆蓋

var_dump($arr[0]);//

wolf, 'wolf'元素自動新增下標0,轉換成'0'

var_dump($arr[a]);//

hippo, $arr[a]轉換成$arr['a']

var_dump($arr[3.3]);//

pangolin, $arr[3.3]轉換成$arr[3]轉換成$arr['3']

var_dump($arr['3.3']);//

null, $arr['3.3'],陣列沒有下標為'3.3'的元素

/*所有鍵型別轉換成整形

*/var_dump($arr[02]);//

pear, $arr[02]即$arr[2]

var_dump($arr['02']);//

null, 陣列沒有下標為'02'的元素

var_dump($arr['0']);//

var_dump($arr[4]);//

banana, $arr[4.4]轉換成$arr[4]

var_dump($arr[5]);//

organe, oragne自動新增下標5(4+1)

數字字串轉換成整形或者浮點型,轉換後進行運算;非數字字串最後乙個字元對應的ascii碼做運算,型別不變。後一種情況時,只對遞增運算子有效,遞減運算子無效。

/*

數字字串轉換成整形

*/$a = '108';

$a--;

var_dump($a);//

int 107,字串轉換成整形進行運算

/*字串最後乙個字元對應的ascii碼做運算

*/$a = '1a4';

$a++;

var_dump($a);//

string '1a5',最後乙個字元對應的ascii碼做運算

$a = 'a';

$a++;

var_dump($a);//

string b,非數字字串不轉換整形0,而是ascii碼做運算

$a--;

var_dump($a);//

string b,遞減運算子對字元字串操作無效

~,按位取反運算時,型別不做轉換;&,按位與,|,按位或,^,按位異或,<<,左移,>>右移操作時,字串和浮點型轉換成整形

/*

按位取反運算時,型別不做轉換

*/$a = '5';

var_dump(~$a);//

亂碼/*

&,按位與,|,按位或,^,按位異或,<<,左移,>>右移操作時,字串和浮點型轉換成整形

*/$a = 10.5;

var_dump($a >> 1);//

5, 浮點型轉換成整形

$a = '1abc';

var_dump($a

<< 1);//

2, 字串轉換成整形

其他型別轉換成布林型。空字串''或'0'轉換成false;數字0或0.0轉換成false;空值null,沒有成員的陣列轉換成false;其餘都轉換成布林型true

$a = 'b';//

true

$b = '0';//

false

$c = 'false';//

true

var_dump(!$a);//

false

var_dump($a && $b);//

false

var_dump($a && $c);//

true

字串轉換成整形或者浮點型

$a = '10.5';

$b = '12';

$c = 1;

var_dump($a+$b);//

22.5, 字串轉換成浮點型

var_dump($a%$c);//

0, 浮點型轉換成整形

var_dump($a/$b);//

0.875,整形轉換成浮點型

其他型別和數字型別做比較時,轉換成數字型別。字串之間的比較轉換成ascii碼做比較。

$a = '12hkd';

$c = 12.0;

var_dump($a==$c);//

true, 字串轉換成整形

$a = '12hkd';

$c = '12.0';

var_dump($a>$c);//

true, 不轉換,字串ascii碼做比較

$a = 'd';

$c = 0;

var_dump($a==$c);//

true, 字串轉換成整形

=,+=,-+,數字型別的賦值運算子,轉換成數字型別。.=字串型別的賦值,運算子轉換成字串

字串轉換成數字的原則為:從左邊開始依次尋找,直到找到不為數字型別的字元為止,返回找到的數字轉成數字型別。

轉換成字串

php資料型別轉換運算

php的資料型別轉換屬於強制轉換,允許轉換的php資料型別有 int integer 轉換成整形 float double real 轉換成浮點型 string 轉換成字串 bool boolean 轉換成布林型別 array 轉換成陣列 object 轉換成物件 php資料型別有三種轉換方式 在要...

C 預設型別轉換

2011 01 05 22 52 06 分類 後台開發 標籤 c型別轉換 字型大小 訂閱對於c語言來說,預設的語句和表示式操作通常應該只使用一種型別的變數和常量,但是往往在實際開發中,我們會混合的去使用不同型別的資料進行運算,為了滿足這個需求,c裡面也配置了乙個預設的規則集合來自動完成型別轉換。其大...

php運算資料型別自動轉換

空字串 或 數字0 或0.0 字元 0 或 0 空值 null 沒有成員的陣列 其餘都轉換成布林型 true,包含資源 如果字串為合法的數字字串,則直接轉換成整型 浮點型 如果字串中包含.或 e或e,則轉換成浮點型 否則轉換成整型 非法的數字字串轉換成數值0 布林型true 轉換成數字 1,fals...