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...