現在の位置: ホーム> 最新記事一覧> PHPのCEIL()は、配列に作用するときにエラーを報告するのはなぜですか?この問題を回避できる選択肢は何ですか?

PHPのCEIL()は、配列に作用するときにエラーを報告するのはなぜですか?この問題を回避できる選択肢は何ですか?

M66 2025-07-10

PHPプログラミングでは、 CEIL()関数は、浮動小数点数を切り上げるために使用される非常に一般的な数学的関数です。例えば:

 echo ceil(4.3); // 出力 5

ただし、誤って配列をceil()関数に渡すと、エラーが発生し、「タイプエラー」または「パラメーターが浮動小数点数でなければならない」とプロンプトします。これは、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()関数を適用する場合、いくつかの一般的なプラクティスがあります。

1。ARRAY_MAP ()関数を使用します

array_map()は、配列の各要素で指定されたコールバック関数を呼び出し、処理された配列を返すことができます。

サンプルコード:

 $values = [4.2, 5.8, 3.1];
$ceiledValues = array_map('ceil', $values);
print_r($ceiledValues);

出力:

 Array
(
    [0] => 5
    [1] => 6
    [2] => 4
)

これは、シンプルでよくパフォーマンスのアプローチです。

2。ループを使用して配列をループし、1つずつ処理します

機能的なプログラミング方法を使用したくない場合は、従来のForeach Traversalを使用することもできます。

 $values = [4.2, 5.8, 3.1];
$ceiledValues = [];
foreach ($values as $value) {
    $ceiledValues[] = ceil($value);
}
print_r($ceiledValues);

効果はarray_map()と同じです。

3.匿名関数または閉鎖を使用して、 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()と協力することもできます。

これにより、タイプエラーを回避するだけでなく、コードをより読みやすく簡潔にします。