PHPデータ型の自動変換と強制変換
PHP は、PHP 5.x 段階では完全に型付けが弱いプログラミング言語です。いわゆる弱い型とは、変數(shù)を宣言するときに変數(shù)の型を指定する必要がないことを意味します。整數(shù)変數(shù)を宣言したいのですが、前に型を書いてから変數(shù)を書く必要はありません。
そして PHP 7 のパフォーマンスは大幅に向上しました。実際のテスト結(jié)果によると、PHP 7 のパフォーマンスは PHP5.6 と比較して 200% 近く向上しました。 PHP 7 のいくつかの場所では、型の指定を強制したり、型の指定を強制せずに変數(shù)を宣言したりできます。
次に、強制型変換と自動型変換について説明しましょう。
【暗黙レベル】ブール値の自動型変換と強制型変換の英単語
ブール値の自動型変換
自動型変換とは、特定の狀況下でデータ型が自動的に別のものに変更されることを意味します. タイプは操作に參加します。自動型変換は、演算や判定の際に特定の値が自動的に変換される場合に発生します。
次の狀況は、ブール値を判斷する際の自動型変換です:
整數(shù)型の場合は 1, 0 が false で、他のすべての整數(shù)値は true です
浮動小數(shù)點の場合は 2, 0.0、ブール値は false です。小數(shù)點の後にゼロ以外の値がある限り、これは true です。
3. 空の文字列は、スペースが含まれている限り true とみなされます。
4 (文字列內(nèi)の 0) も false として扱われます。それ以外はすべて true
5 であり、値が存在する限り空の配列も false とみなされます。
6. 空であることも false です。
7. 成功したと宣言されていないリソースも false です。
上記の原則を 1 つずつ試して結(jié)果を確認します。整數(shù)型の場合は
1、0 は false、その他の整數(shù)値はすべて true
<?php //整型的0,換成整型的其他值試試 $bool = 0; if($bool){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
2、浮動小數(shù)點の場合は 0.0、ブール値は false。小數(shù)點の後にゼロ以外の値がある限り、これは true です。
<?php //浮點類型的的0,換成其他值試試 $bool = 0.0; if($bool){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
3、空の文字列は false ですが、その中にスペースがある限り、true とみなされます。
<?php //空字符串,中間沒有空格喲。實驗完加個空格試試 $str = ''; if($str){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
4、文字列內(nèi)の 0 も false として扱われます。それ以外はすべて true
<?php //0這個字符串喲,試試其他值看看 $str = '0'; if($str){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
5. 値が存在する限り、空の配列も false とみなされます。
<?php //這個數(shù)組當中啥也沒放 $arr = array(); if($arr){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
6、空も偽です
<?php //聲明了一個空的變量$bool $bool = null; if($bool){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
7、成功が宣言されていないリソースも偽です
<?php //下面這段代碼會顯示警告,可忽略。暫時只需要對著實驗知道效果即可:未聲成功的資源也為假 //下面這一塊了解意思就行:打開adasfasfasfdsa.txt這個不存在的文件 $res = fopen('adasfasfasfdsa.txt','r'); if($res){ echo '美女美女我愛你'; }else{ echo '鳳姐鳳姐愛死我,執(zhí)行假區(qū)間咯'; } ?>
他の種類の自動型変換
自動型変換も可能です動作中に発生する。これは、私たちが要約するすべてのルールや意見と同じです。まず要約し、次に実験します。
スカラーのみが、操作中に次の自動型変換を生成します:
<?php //布爾變整型參與運算 $fo = true; $result = $fo + 10; //$result 結(jié)果為整型的11,因為$fo布爾的true變?yōu)榱? //如果$fo的值為0 var_dump($result); //字符串類型 $str = '419不要愛'; $result = $str + 1; //結(jié)果為420。因為將$str變?yōu)榱苏偷?19參與運算 //將419放在字符串中間和結(jié)尾試試 var_dump($result); ?>
概要:
ブール値 true は、演算に參加すると整數(shù)または浮動小數(shù)點 1 になります。ブール値 false は、演算に參加すると整數(shù)または浮動小數(shù)點 0 になります。対応する型に変換して操作に參加します
強制型変換
強制型変換には 3 つの方法があります:
1. 次の 3 つの関數(shù)、intval()、floatval を使用して型変換を完了します。 (), strval()
2.変數(shù)の前に()を追加して型を書き、変換して他の変數(shù)に代入します
3.settype(変數(shù),型)で変數(shù)そのものを直接変更してみます
実験してみましょう:
intval(), floatval() , strval() 変換
<?php $float = 1.23; $result = intval($float); //看看結(jié)果是不是變了? var_dump($result); //鴨脖子為整型的5 $yabozi = 5; $re = floatval($yabozi); var_dump($re); //定義整型的變量 $yabozi = 23; $bian = strval($yabozi); //強制變成字符串試試 var_dump($bian); ?>
変數(shù)の前に()を付けて型を書き、変換して他の変數(shù)に代入
<?php //定義一個變量,我們來變化一下試試 $transfer = 12.8; //把浮點變?yōu)檎? $jieguo = (int)$transfer; var_dump($jieguo); //把浮點變?yōu)椴紶? $jieguo = (bool) $transfer; var_dump($jieguo); //把布爾變整型 $bool = true; $jieguo = (int)$bool; var_dump($jieguo); //把浮點變數(shù)組 $fo = 250; $jieguo = (array)$fo; var_dump($jieguo); //其他的操作方式,按照文字總結(jié)的規(guī)律你來試試 ?>
settype(variable, type) 數(shù)量自體を直接変更します
<?php //定義浮點變?yōu)檎? $fo = 250.18; //settype第二個參數(shù)是int,你實驗的時候要記得第二個參數(shù)要為字符串類型 settype($fo,'int'); //輸出看看結(jié)果 var_dump($fo); ?>
【試してみます】 以下は強制型変換の特徴であり、それが正しいかどうかを確認することができます:
1.アイドリングを整數(shù)に変換すると整數(shù)0になります 2. アイドリングを浮動小數(shù)點數(shù)に変換した場合 點は浮動小數(shù)點0になります 3. 空の點を文字列に変換した場合は となります空の文字列 '' 4. 浮動小數(shù)點 123.0 は文字列に変換され、文字列 123 5. 浮動小數(shù)點 123.2 は文字に変換され、文字列は文字列の 123.2 になります 6. 浮動小數(shù)點の小數(shù)點がどんなに大きくても、小數(shù)點は削除され、小數(shù)點以下の値は破棄されます 7. 文字列を整數(shù)に変換する場合、値が前にある場合は、以前の値を取得し、それを整數(shù)変換値として使用します。 8.settype(variable,'null'); 変數(shù)??の unset() と同等 9.$ターゲット変數(shù) = (type)$ 操作変數(shù)は、元の変數(shù)の型ではなく、ターゲット変數(shù)の型を変更するだけです変數(shù)、Settype は元の値を変更するものです
<?php //小可愛,記得自己做實驗,驗證上面的9點喲 $t=12.9; settype($t,'int'); var_dump($t); ?>
set 発音: [s?t]
説明: Set
説明: 型、メソッド