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.
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.
Es gibt mehrere gängige Praktiken, wenn Sie die Funktion Ceil () auf jedes Element in einem Array anwenden möchten:
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.
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 () .
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.
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.