Position actuelle: Accueil> Derniers articles> Pourquoi la fonction CEIL () dans PHP signale-t-elle une erreur lorsqu'elle agit sur un tableau? Quelles alternatives peuvent éviter ce problème?

Pourquoi la fonction CEIL () dans PHP signale-t-elle une erreur lorsqu'elle agit sur un tableau? Quelles alternatives peuvent éviter ce problème?

M66 2025-07-10

Dans la programmation PHP, la fonction CEIL () est une fonction mathématique très courante utilisée pour rassembler un numéro de point flottant. Par exemple:

 echo ceil(4.3); // Sortir 5

Mais si nous transmettons accidentellement un tableau à la fonction ceil () , nous rencontrerons une erreur, ce qui invite "l'erreur de type" ou "le paramètre doit être un numéro de point flottant". En effet, la fonction ceil () ne peut agir que sur un seul nombre (type scalaire) et ne peut pas agir directement sur un tableau.

Pourquoi la fonction ceil () signale-t-elle une erreur lorsqu'elle agit sur un tableau?

La définition de la fonction ceil () est la suivante:

 float ceil(float $value)

Son paramètre attendu est un nombre de points flottants ou une valeur scalaire qui peut être converti en nombres de points flottants, tandis que les tableaux sont des structures de données composites et ne peuvent pas être implicitement convertis en nombres.

Exemple de code qui provoque une erreur:

 $values = [4.2, 5.8, 3.1];
$result = ceil($values); // Rapportera une erreur:Les paramètres doivent êtrefloat,Ne peut pas être un tableau

Lors de l'exécution de ce code, une erreur comme celle suivante sera signalée:

 Warning: ceil() expects parameter 1 to be float, array given

Par conséquent, nous ne pouvons pas utiliser directement ceil () pour traiter les tableaux.

Comment éviter cette erreur? Quelles alternatives y a-t-il?

Il existe plusieurs pratiques communes si vous souhaitez appliquer la fonction ceil () à chaque élément d'un tableau:

1. Utilisez la fonction array_map ()

array_map () peut appeler la fonction de rappel spécifiée sur chaque élément du tableau et renvoyer le tableau traité.

Exemple de code:

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

Sortir:

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

Il s'agit d'une approche simple et bien performante.

2. Utilisez une boucle pour parcourir le tableau et le traiter un par un

Si vous ne souhaitez pas utiliser de méthodes de programmation fonctionnelle, vous pouvez également utiliser la traversée traditionnelle de la traversée :

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

L'effet est le même que Array_Map () .

3. Utilisez des fonctions ou des fermetures anonymes pour coopérer avec array_map ()

Si vous devez effectuer un traitement plus complexe des éléments, vous pouvez passer des fonctions anonymes:

 $values = [4.2, 5.8, 3.1];
$ceiledValues = array_map(function($val) {
    return ceil($val);
}, $values);
print_r($ceiledValues);

Cela peut sembler redondant pour les opérations simples de plateaux , mais est très flexible selon des exigences complexes.

Résumer

  • La fonction CEIL () ne peut accepter qu'un seul numéro de point flottant et ne peut pas être transmise dans un tableau, sinon une erreur sera signalée.

  • Appliquer ceil () à chaque élément du tableau, et il est recommandé d'utiliser Array_map ('ceil', $ array) .

  • Les boucles traditionnelles peuvent également implémenter la même fonction, mais array_map () est plus simple.

  • Selon les besoins réels, une fonction anonyme peut également être utilisée pour coopérer avec array_map () .

Cela évite non seulement les erreurs de type, mais rend également le code plus lisible et concis.