intvalは、値を整数に変換するためのPHPに組み込まれた関数です。基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$var</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$base</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
$ var :変換されるデータ。これはあらゆるタイプである可能性があります。
$ベース:変換されたバイナリシステムを示すオプションパラメーター、デフォルトは10(小数)です。
INTVAL関数は、入力変数に基づいて自動的に変換されます。入力が数値文字列の場合、 intvalは文字列を解析し、整数部分を返します。文字列を有効な数値に解析できない場合は、0を返します。非数字(オブジェクト、配列など)の場合、 intvalは0を返します。
<span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-string">"123abc"</span></span><span>)); </span><span><span class="hljs-comment">// int(123)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-string">"abc123"</span></span><span>)); </span><span><span class="hljs-comment">// int(0)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-number">10.56</span></span><span>)); </span><span><span class="hljs-comment">// int(10)</span></span><span>
</span></span>
上記の例では、 intval関数は文字列から非数値文字を自動的に削除し、有効な数値部分のみを保持します。文字列を有効な数値に変換できないときに0を返します。
PHPは、変数を指定された型に変換して、キャストを通じて直接変換します。整数タイプの場合、キャストは次のように行うことができます。
<span><span>(</span><span><span class="hljs-keyword">int</span></span><span>) </span><span><span class="hljs-variable">$var</span></span><span>
</span></span>
または(整数)構文を使用します。この変換方法は、任意のデータ型に適しており、PHPは型を明示的に指定する限り変換されます。
<span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>((</span><span><span class="hljs-keyword">int</span></span><span>) </span><span><span class="hljs-string">"123abc"</span></span><span>); </span><span><span class="hljs-comment">// int(123)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>((</span><span><span class="hljs-keyword">int</span></span><span>) </span><span><span class="hljs-string">"abc123"</span></span><span>); </span><span><span class="hljs-comment">// int(0)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>((</span><span><span class="hljs-keyword">int</span></span><span>) </span><span><span class="hljs-number">10.56</span></span><span>); </span><span><span class="hljs-comment">// int(10)</span></span><span>
</span></span>
intvalと同様に、鋳造は文字列を整数部品に変換し、無効な文字または非数字部品を無視します。変換できない文字列の場合、キャストは0を返します。
intvalとcastingの両方が変数を整数に変換できますが、実装と目的は異なります。主な違いは次のとおりです。
戻り値タイプ: intvalは常に整数タイプを返し、キャストも整数タイプを返しますが、特に他の複雑なタイプの変換(配列やオブジェクトへの変換など)に関しては、キャストがより柔軟性が必要になる場合があります。
パラメーター制御: intval関数はオプションの$ baseパラメーターを受け入れ、バイナリ変換を指定できますが、キャストはバイナリを制御できません。
フォールトトレランス: INTVAL関数は、かなりの数に変換できない文字列に対して0を直接返しますが、キャストはPHPのタイプ変換ルールに従います(たとえば、 nullを変換するときに0を返しますが、空の配列またはオブジェクトを変換するときに警告が発生します)。
バイナリを明示的に変換する必要がある場合:特定のバイナリで文字列を整数に変換する必要がある場合、 $ baseパラメーターをサポートするため、 intvalがより適切になります。たとえば、 INTVALは、バイナリ、オクタル、16進数、その他のデータを処理する際に、より多くの制御を提供します。
<span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-string">"1010"</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>)); </span><span><span class="hljs-comment">// int(10), バイナリから小数</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">intval</span></span><span>(</span><span><span class="hljs-string">"A"</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>)); </span><span><span class="hljs-comment">// int(10), 十進数から十進み</span></span><span>
</span></span>
明確な意図: intvalを使用すると、コードをより読みやすくし、整数に明示的に変換する意図を表現できます。変数を整数に変換したいだけで、他のタイプの変換や合併症を気にしない場合、 intvalは明確な選択です。
文字列を処理する場合:文字列を処理する場合、 intvalはより明示的です。左から右に順番に数値を解析し、無効な文字を無視します。 intvalは通常、タイプに厳密に変換する必要がないシナリオでより簡潔です。
非数字の文字列を処理する場合:非数量文字列(「ABC123」など)のINTVALの処理は直接0を返します。この動作は、エラーや予期しない結果を回避するのに役立ちます。
パフォーマンス要件:鋳造は通常、関数を呼び出すのではなく、変数の内部表現を直接操作するため、通常、関数呼び出しよりも効率的です。特にパフォーマンスの要件が高い場合、キャストを使用する方が適切かもしれません。
その他のタイプ変換要件:他のタイプ(配列から文字列、オブジェクトからアレイまで)を変換する必要がある場合、キャストタイプの変換をより柔軟にします。
単純なデータ型変換:変数タイプを変換するだけで、追加の機能や制御を必要としない場合、キャストはより簡潔になる場合があります。