J'ai besoin d'un conseil pour réécrire un morceau de code PHP, afin qu'il soit plus efficace sur l'utilisation de la mémoire.array_count_values utilisé avec array_filter atteindre la taille de la mémoire autorisée
Code Description: J'Obtention des valeurs séparées par des virgules (comme a, b, c, d) à partir de MySQL
et en ajoutant chacun d'entre eux dans une nouvelle chaîne de caractères séparés par des virgules via while loop
. Après cela, j'utilise array_count_values(array_filter(explode(',',$string)
afin d'obtenir le nombre de fois que chaque valeur différente est contenue dans la chaîne.
Le code lui-même fonctionne. Cependant, pour les tableaux massifs, PHP renvoie une erreur Fatal error: Allowed memory size of 524288000 bytes exhausted
et j'ai besoin de trouver une solution pour cela.
Remarque: Je souhaite éviter d'affecter un memory_limit
supérieur dans php.ini ou via ini_set
. Ce que je cherche est une solution qui donnera le même résultat mais sans avoir à faire face à des problèmes de mémoire. Je pensais que je peux enregistrer le nombre de valeur sur chaque boucle mais de toute façon je ne peux pas trouver la bonne façon de le faire.
Des suggestions?
$options = '';
while(!$rs_results->EOF){
$options .= $rs_results->fields['options'].",";
$rs_results->MoveNext();
}
$arrOptions = array_count_values(array_filter(explode(',', $options)));