Ich brauche einen Rat, wie man ein Stück PHP-Code umschreiben kann, so dass es effizienter auf Speichernutzung ist.array_count_values verwendet mit array_filter erreicht zulässige Speichergröße
Code Beschreibung: I Komma getrennte Werte ist Abrufen (wie a, b, c, d) aus MySQL
und Hinzufügen jedes von ihnen in einem neuen String Komma getrennt über while loop
. Danach verwende ich array_count_values(array_filter(explode(',',$string)
, um die Anzahl der Male zu erhalten, die jeder unterschiedliche Wert in der Zeichenfolge enthalten ist.
Der Code selbst funktioniert. Für massive Arrays gibt PHP jedoch einen Fehler Fatal error: Allowed memory size of 524288000 bytes exhausted
zurück und ich muss eine Lösung dafür finden.
Hinweis: Ich möchte vermeiden, eine höhere memory_limit
in php.ini oder über ini_set
zuweisen. Was ich suche, ist eine Lösung, die das gleiche Ergebnis liefert, ohne sich mit Speicherproblemen herumschlagen zu müssen. Ich dachte, dass ich die Wert-Zählung für jeden Loop aufzeichnen kann, aber irgendwie finde ich den richtigen Weg nicht.
Irgendwelche Vorschläge?
$options = '';
while(!$rs_results->EOF){
$options .= $rs_results->fields['options'].",";
$rs_results->MoveNext();
}
$arrOptions = array_count_values(array_filter(explode(',', $options)));