PHPプログラミングでは、 CEIL()関数は、浮動小数点数を切り上げるために使用される非常に一般的な数学的関数です。例えば:
echo ceil(4.3); // 出力 5
ただし、誤って配列をceil()関数に渡すと、エラーが発生し、「タイプエラー」または「パラメーターが浮動小数点数でなければならない」とプロンプトします。これは、CEIL()関数が単一の数値(スカラータイプ)でのみ作用することができ、配列に直接作用できないためです。
CEIL()関数の定義は次のとおりです。
float ceil(float $value)
予想されるパラメーターは、フローティングポイント数またはスカラー値であり、フローティングポイント番号に変換できますが、配列は複合データ構造であり、暗黙的に数値に変換することはできません。
エラーを引き起こすコードの例:
$values = [4.2, 5.8, 3.1];
$result = ceil($values); // エラーが報告されます:パラメーターはそうでなければなりませんfloat,配列になることはできません
このコードを実行すると、次のようなエラーが報告されます。
Warning: ceil() expects parameter 1 to be float, array given
したがって、 CEIL()を使用して配列を処理することはできません。
配列内の各要素にceil()関数を適用する場合、いくつかの一般的なプラクティスがあります。
array_map()は、配列の各要素で指定されたコールバック関数を呼び出し、処理された配列を返すことができます。
サンプルコード:
$values = [4.2, 5.8, 3.1];
$ceiledValues = array_map('ceil', $values);
print_r($ceiledValues);
出力:
Array
(
[0] => 5
[1] => 6
[2] => 4
)
これは、シンプルでよくパフォーマンスのアプローチです。
機能的なプログラミング方法を使用したくない場合は、従来のForeach Traversalを使用することもできます。
$values = [4.2, 5.8, 3.1];
$ceiledValues = [];
foreach ($values as $value) {
$ceiledValues[] = ceil($value);
}
print_r($ceiledValues);
効果はarray_map()と同じです。
要素のより複雑な処理を行う必要がある場合は、匿名関数を渡すことができます。
$values = [4.2, 5.8, 3.1];
$ceiledValues = array_map(function($val) {
return ceil($val);
}, $values);
print_r($ceiledValues);
これは、単純な天井操作には冗長に見えるかもしれませんが、複雑な要件の下では非常に柔軟です。
CEIL()関数は単一のフローティングポイント番号のみを受け入れることができ、配列に渡すことはできません。そうしないと、エラーが報告されます。
Arrayの各要素にceil()を適用すると、 array_map( 'ceil'、$ array)を使用することをお勧めします。
従来のループも同じ機能を実装できますが、 array_map()はよりシンプルです。
実際のニーズに応じて、匿名関数を使用してarray_map()と協力することもできます。
これにより、タイプエラーを回避するだけでなく、コードをより読みやすく簡潔にします。