C'est une question de programmation simple, venant de mon manque de connaissance sur la façon dont PHP gère la copie et la suppression d'éléments de tableau pendant une boucle foreach
. C'est comme ceci, j'ai un tableau qui me vient d'une source externe formaté de la façon dont je veux le changer. Un exemple simple serait :
$myData = array('Clé1' => array('valeur1', 'valeur2'));
Mais ce que je veux serait quelque chose comme :
$myData = array([0] => array('MaClé' => array('Clé1' => array('valeur1', 'valeur2'))));
Je prends donc le premier $myData
et le formate comme le deuxième $myData
. Je suis totalement à l'aise avec mon algorithme de mise en forme. Ma question porte sur la recherche d'un moyen de conserver la mémoire puisque ces tableaux pourraient devenir un peu encombrants. Ainsi, pendant ma boucle foreach
je copie la ou les valeurs actuelles du tableau dans le nouveau format, puis je supprime la valeur avec laquelle je travaille du tableau d'origine. Par exemple :
$formattedData = array();
foreach ($myData as $key => $val) {
// faire un peu de mise en forme ici, copier dans $reformattedVal
$formattedData[] = $reformattedVal;
unset($myData[$key]);
}
Est-ce que l'appel à unset()
est une bonne idée ici ? Autrement dit, est-ce que cela sauvegarde de la mémoire puisque j'ai copié les données et n'ai plus besoin de la valeur originale ? Ou est-ce que PHP collecte automatiquement les déchets car je ne les référence pas dans un code ultérieur ?
Le code fonctionne bien, et jusqu'à présent mes ensembles de données ont été trop négligeables en taille pour tester les différences de performances. Je ne sais juste pas si je me prépare à des bogues bizarres ou à des ralentissements CPU plus tard.
Merci pour toute idée.
-sR