[Wie funktioniert die MAX () -Funktion bei der Verarbeitung nicht numerischer Daten? Wie benutze ich es richtig? ]
In PHP wird die MAX () -Funktion verwendet, um den Maximalwert eines Wertesatzes zurückzugeben. Es ist sehr praktisch, in der Lage, Arrays oder mehrere Parameter abzuwickeln, und wird häufig in numerischen Vergleiche verwendet. Im tatsächlichen Entwicklungsprozess verstehen viele Entwickler jedoch nicht vollständig, wie die MAX () -Funktion nicht-numerische Daten umgeht, insbesondere wenn Verarbeitung von Zeichenfolgen, Booleans, Nulls und anderen Daten verarbeitet werden, die Ergebnisse sind möglicherweise überraschend. In diesem Artikel wird mehrere Beispiele verwendet, um die Leistung der MAX () -Funktion zu untersuchen, wenn nicht numerische Daten verarbeitet und die Verwendung dieser Funktion korrekt verwendet wird.
Die grundlegende Syntax der MAX () -Funktion lautet wie folgt:
<span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$values</span></span><span>)
</span></span>$ Werte können ein Array oder mehrere Parameter sein.
Wenn ein Array bereitgestellt wird, gibt max () den Maximalwert im Array zurück.
Wenn mehrere Parameter bereitgestellt werden, gibt max () den Maximalwert dieser Parameter zurück.
Zum Beispiel:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 5</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>([</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>]); </span><span><span class="hljs-comment">// Ausgabe 5</span></span><span>
</span></span>Wenn MAX () -Funktion in PHP unterschiedliche Datentypen verarbeitet, wird es basierend auf der internen Darstellung (Typumwandlung) der Daten vergleichbar. Hier sind einige häufige nicht numerische Datenarten und ihre Leistung:
Wenn der Parameter der MAX () -Funktion eine Zeichenfolge ist, wird die Zeichenfolge in der Wörterbuchreihenfolge (d. H. ASCII -Wert) verglichen. Dies bedeutet, dass die Reihenfolge der Zeichen der Zeichenfolge verglichen wird, nicht ihre Länge oder andere Attribute. Zum Beispiel:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"orange"</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe "orange"</span></span><span>
</span></span>In diesem Beispiel vergleicht die MAX () -Funktion die Zeichenfolgen alphabetisch, sodass Orange als die größte angesehen wird.
Boolesche Werte haben zwei mögliche Werte in PHP: True und False . Im Vergleich dazu wird FALSE als 0 betrachtet und wahr wird betrachtet. 1. Wenn MAX () -Funktion die Booleschen Werte verarbeitet, behandelt es wahr als größer als falsch und gibt wahr zurück.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 1 (Im Augenblick true)</span></span><span>
</span></span>Bei der Verarbeitung von Nullwerten behandelt die MAX () -Funktion sie als den kleinsten Wert. Dies liegt daran, dass Null in PHP zum Vergleich in 0 konvertiert wird. Wenn der übergebene Parameter NULL enthält, wird Null als der kleinste Wert angesehen und die Funktion gibt den Maximalwert unter anderen Nicht- Null -Werten zurück.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-literal">NULL</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 10</span></span><span>
</span></span>PHP ist eine dynamisch typisierte Sprache, die beim Vergleich implizite Typumwandlungen durchführt. Wenn die Parameter der MAX () -Funktion mit Zahlen und Zeichenfolgen gemischt werden, wird die Zeichenfolge zum Vergleich in Zahlen konvertiert. Wenn die Zeichenfolge selbst eine gültige numerische Zeichenfolge ist, wird er in die entsprechende Zahl konvertiert. Wenn es sich nicht um eine gültige numerische Zeichenfolge handelt, konvertiert PHP sie in 0.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">"20"</span></span><span>, </span><span><span class="hljs-string">"abc"</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 20</span></span><span>
</span></span>In diesem Beispiel wird "20" in die Nummer 20 umgewandelt und "ABC" in 0 konvertiert, so dass max () 20 zurückgibt.
Ebenso wird ein Boolean -Wert im Vergleich zu einer Zahl in 0 ( falsch ) oder 1 ( True ) konvertiert. Wenn die MAX () -Funktion einen booleschen Wert im Argument enthält, wird sie wie eine Zahl am Vergleich beteiligt.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 5</span></span><span>
</span></span>Hier wird True in 1 umgewandelt, sodass die MAX () -Funktion die größte Nummer 5 zurückgibt.
Um unerwartete Ergebnisse zu vermeiden, die durch Typumwandlungen verursacht werden, wird empfohlen, sicherzustellen, dass die Datentypen aller Parameter konsistent sind, bevor Sie die Funktion max () aufrufen. Dies kann sichergestellt werden, wie man überprüft oder gießt.
<span><span><span class="hljs-variable">$values</span></span><span> = [</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">"10"</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>];
</span><span><span class="hljs-variable">$values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'intval'</span></span><span>, </span><span><span class="hljs-variable">$values</span></span><span>); </span><span><span class="hljs-comment">// Umwandeln Sie alle Elemente in Ganzzahlen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$values</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 20</span></span><span>
</span></span>Achten Sie bei der Verwendung der MAX () -Funktion auf die Handhabung von Nullwerten . Sie können den Nullwert entfernen, bevor Sie MAX () aufrufen, oder ein bedingtes Urteilsvermögen verwenden, um sicherzustellen, dass Null das Ergebnis nicht beeinflusst.
<span><span><span class="hljs-variable">$values</span></span><span> = [</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-literal">NULL</span></span><span>, </span><span><span class="hljs-number">15</span></span><span>];
</span><span><span class="hljs-variable">$values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$values</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> !== </span><span><span class="hljs-literal">NULL</span></span><span>;
});
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$values</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 15</span></span><span>
</span></span>Denken Sie bei String -Vergleiche daran, dass die MAX () -Funktion in der Wörterbuchreihenfolge verglichen wird. Daher ist es am besten sicherzustellen, dass die verglichenen Saiten beim Sortieren keine unerwarteten Ergebnisse erzielen. Die Reihenfolge oder Länge der Zeichenfolge kann vor dem Aufrufen von MAX () bestätigt werden, insbesondere bei mehrsprachigen Anwendungen.
<span><span><span class="hljs-variable">$strings</span></span><span> = [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"orange"</span></span><span>];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-variable">$strings</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe "orange"</span></span><span>
</span></span>Die MAX () -Funktion in PHP ist sehr bequem, aber wenn Sie sich mit nicht numerischen Typen befassen, müssen Sie auf seine impliziten Typ-Conversion-Regeln achten. Wenn Sie verstehen, wie Sie mit nicht numerischen Daten wie Zeichenfolgen, Booleschen, Nulls usw. umgehen können, können wir einige potenzielle Fehler vermeiden. Bei der korrekten Verwendung der MAX () -Funktion ist es am besten sicherzustellen, dass die Datentypen konsistent sind, oder die erforderliche Konvertierung und Reinigung der Typen vor der Verwendung durchführen. Dies vermeidet nicht nur unerwartete Typ -Konvertierungsergebnisse, sondern verbessert auch die Lesbarkeit und Wartbarkeit des Codes.