Aktueller Standort: Startseite> Neueste Artikel> Wie verbessert man die Effizienz mit der MAX () -Funktion in Kombination mit Array Mapping (Array_Map)?

Wie verbessert man die Effizienz mit der MAX () -Funktion in Kombination mit Array Mapping (Array_Map)?

gitbox 2025-09-05

Ideen zur Verbesserung der Effizienz

Der Schlüssel zur Optimierung liegt darin. Wenn wir nur den maximalen Wert erzielen und kein vollständiges Zuordnungsergebnis benötigen, können wir die Logik in einer Schleife schreiben, um zu vervollständigen:

 <span><span><span class="hljs-variable">$prices</span></span><span> = [</span><span><span class="hljs-number">1999</span></span><span>, </span><span><span class="hljs-number">2500</span></span><span>, </span><span><span class="hljs-number">3200</span></span><span>, </span><span><span class="hljs-number">1800</span></span><span>];

</span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$prices</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span>) {
    </span><span><span class="hljs-variable">$converted</span></span><span> = </span><span><span class="hljs-variable">$p</span></span><span> / </span><span><span class="hljs-number">100</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$maxPrice</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span> || </span><span><span class="hljs-variable">$converted</span></span><span> &gt; </span><span><span class="hljs-variable">$maxPrice</span></span><span>) {
        </span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-variable">$converted</span></span><span>;
    }
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$maxPrice</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe 32</span></span><span>
</span></span>

Wenn Sie dies tun, wird der Prozess von Array_Map vermieden, neue Arrays zu erstellen, Speicher zu speichern und in Big -Data -Szenarien besser abzubauen.


Kombination anonymer Funktionen und Generatoren

Wenn der Code den funktionalen Stil beibehalten und den Speicherverbrauch reduzieren möchte, können Sie den Generator in Betracht ziehen:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">convertPrices</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$prices</span></span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$prices</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span>) {
        </span><span><span class="hljs-keyword">yield</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span> / </span><span><span class="hljs-number">100</span></span><span>;
    }
}

</span><span><span class="hljs-variable">$prices</span></span><span> = [</span><span><span class="hljs-number">1999</span></span><span>, </span><span><span class="hljs-number">2500</span></span><span>, </span><span><span class="hljs-number">3200</span></span><span>, </span><span><span class="hljs-number">1800</span></span><span>];

</span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-title function_ invoke__">iterator_to_array</span></span><span>(</span><span><span class="hljs-title function_ invoke__">convertPrices</span></span><span>(</span><span><span class="hljs-variable">$prices</span></span><span>)));

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$maxPrice</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe 32</span></span><span>
</span></span>

Obwohl hier Iterator_TO_Array verwendet wird, kann der Generator in komplexeren Streaming-Szenarien ein großes Datenladen in den Speicher in Speicher gleichzeitig vermeiden, was eine bessere Skalierbarkeit aufweist.