Aktueller Standort: Startseite> Neueste Artikel> Warum meldet die Funktion ceil () in PHP einen Fehler, wenn sie auf einem Array wirkt? Welche Alternativen können dieses Problem vermeiden?

Warum meldet die Funktion ceil () in PHP einen Fehler, wenn sie auf einem Array wirkt? Welche Alternativen können dieses Problem vermeiden?

M66 2025-07-10

Bei der PHP -Programmierung ist die CEIL () -Funktion eine sehr häufige mathematische Funktion, mit der eine schwimmende Punktzahl abgerufen wird. Zum Beispiel:

 echo ceil(4.3); // Ausgabe 5

Wenn wir jedoch versehentlich ein Array an die Funktion von CEIL () übergeben, werden wir auf einen Fehler stoßen und "Fehler" oder "Der Parameter muss eine schwimmende Punktzahl sein". Dies liegt daran, dass die Funktion CEIL () nur auf eine einzelne Zahl (Skalartyp) wirken kann und nicht direkt auf ein Array wirken kann.

Warum meldet die Funktion CEIL () einen Fehler, wenn er auf einem Array wirkt?

Die Definition der Funktion ceil () lautet wie folgt:

 float ceil(float $value)

Der erwartete Parameter ist eine schwimmende Punktzahl oder einen Skalarwert, der in schwimmende Punktzahlen umgewandelt werden kann, während Arrays zusammengesetzte Datenstrukturen sind und nicht implizit in Zahlen umgewandelt werden können.

Beispielcode, der Fehler verursacht:

 $values = [4.2, 5.8, 3.1];
$result = ceil($values); // Meldet einen Fehler:Die Parameter müssen seinfloat,Kann kein Array sein

Bei der Ausführung dieses Code wird ein Fehler wie folgt gemeldet:

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

Daher können wir Ceil () nicht direkt verwenden, um Arrays zu verarbeiten.

Wie vermeiden Sie diesen Fehler? Welche Alternativen gibt es?

Es gibt mehrere gängige Praktiken, wenn Sie die Funktion Ceil () auf jedes Element in einem Array anwenden möchten:

1. Verwenden Sie die Funktion array_map ()

array_map () kann die angegebene Rückruffunktion in jedem Element des Arrays aufrufen und das verarbeitete Array zurückgeben.

Beispielcode:

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

Ausgabe:

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

Dies ist ein einfacher und gut leistungsfähiger Ansatz.

2. Verwenden Sie eine Schleife, um das Array durch das Array zu schieben und nacheinander zu verarbeiten

Wenn Sie keine funktionalen Programmiermethoden verwenden möchten, können Sie auch traditionelle Foreach -Traversal verwenden:

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

Der Effekt ist der gleiche wie array_map () .

3.. Verwenden Sie anonyme Funktionen oder Schließungen, um mit Array_Map zusammenzuarbeiten () zusammenzuarbeiten

Wenn Sie eine komplexere Verarbeitung von Elementen durchführen müssen, können Sie anonyme Funktionen übergeben:

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

Dies mag für einfache Ceil -Operationen überflüssig erscheinen, ist jedoch unter komplexen Anforderungen sehr flexibel.

Zusammenfassen

  • Die CEIL () -Funktion kann nur eine einzelne schwimmende Punktzahl akzeptieren und kann nicht in ein Array übergeben werden, andernfalls wird ein Fehler gemeldet.

  • Wenden Sie Ceil () auf jedes Element im Array an, und es wird empfohlen , Array_Map ('Ceil', $ Array) zu verwenden.

  • Herkömmliche Schleifen können auch dieselbe Funktion implementieren, aber Array_map () ist einfacher.

  • Nach den tatsächlichen Bedürfnissen kann auch eine anonyme Funktion verwendet werden, um mit Array_Map () zusammenzuarbeiten.

Dies vermeidet nicht nur Typ -Fehler, sondern macht den Code auch lesbarer und prägnanter.