PHPプログラミングでは、 CEIL()関数は、数値を上方に丸めると一般的に使用される数学関数です。つまり、最小の整数を数以上に戻します。関数は次のように定義されています。
float ceil ( float $value )
通常、 CEIL()関数の引数は数値タイプ、またはPHPによって数値に自動的に変換できる文字列です。しかし、入ってくる漢字や違法な弦があった場合はどうなりますか?この記事では、CEIL()関数がこのような入力の下でどのように機能するか、および非数値入力をどのように扱うかを詳細に説明します。
簡単な呼び出し例:
<?php
echo ceil(4.2); // 出力 5
echo ceil(-3.7); // 出力 -3
?>
ceil()は、浮動小数点数を上向きに丸め、負の数の処理に注意してください。上向きに丸めた結果は、値が大きい整数です(-3.7が-3まで上向きに丸くなるなど)。
<?php
echo ceil("中国語"); // ?
echo ceil("abc123"); // ?
echo ceil("123abc"); // ?
?>
PHPは、型の関数パラメーターを変換しようとし、 ceil()で受信したパラメーターはフロートに変換されます。変換プロセス中、PHPは文字列の先頭から数値文字を解析しようとし、最初の違法な数値文字に遭遇したときに変換を停止します。文字列の開始を数値に変換できない場合、結果は0です。
特定の症状は次のとおりです。
「中国語」 :文字列の始まりは非数値文字であり、浮動小数点数に変換されたため、天井(「中国」)の結果は0です。
「ABC123」 :非番号でも始まり、変換結果は0で、0は0です。
「123ABC」 :文字列は123から始まります。Aが遭遇すると、変換が停止して123に変換されます。CEIL ( "123ABC")の結果は123です。
サンプルコード:
<?php
var_dump(ceil("中国語")); // float(0)
var_dump(ceil("abc123")); // float(0)
var_dump(ceil("123abc")); // float(123)
?>
出力:
float(0)
float(0)
float(123)
PHPは上記のタイプの暗黙的な変換を可能にしますが、実際のプロジェクトでは、予期しない結果を避けるために、非数量文字列をCEIL()に渡すことを避ける必要があります。
is_numeric()を使用して、入力が数字であるかどうかを検出します。
<?php
$input = "中国語";
if (is_numeric($input)) {
echo ceil($input);
} else {
echo "入力は数ではありません,ソートできません";
}
?>
より厳格なフィルタリングには、 filter_var()を使用してください。