par
Hubert Roksor » 23 mars 2006, 23:00
Je ne suis pas au courant de changements sur la gestion interne des tableaux entre PHP 4.4 et PHP 5.0, mais sache toutefois que créer un tableau de plusieurs (centaines de!) milliers d'entrée n'est pas une bonne idée en PHP. Non seulement ça prend énormément de mémoire mais en plus c'est très lent. Tu devrais peut-être chercher une autre approche, essaie de poster ce que tu fais réellement avec ce tableau, et pourquoi tu le fais, on pourra peut-être trouver une meilleure solution.
De plus, même si PHP est très flexible à ce sujet, une chaîne est une chaîne, et un nombre est un nombre (sauf en ce qui concerne les clés des tableaux, qui sont toutes des chaînes, mais c'est un autre problème). Si ton tableau doit contenir des nombres alors utilise des nombres, par exemple:
// Ajouter un 0 au tableau
$elem[] = 0;
// Les résultats des bases de données sont toujours considérés comme
// des chaîne, convertir en nombre grâce à (int) ou intval()
// Par exemple, récupérons l'âge de tous nos utilisateurs
$sql = 'SELECT id, age FROM utilisateur';
$result = mysql_query($sql);
$age_utilisateurs = array();
while ($row = mysql_fetch_assoc($result))
{
$age_utilisateurs[$row['id']] = (int) $row['age'];
}
Au fait, inutile d'utiliser $elem[$i], tu peux faire un simple $elem[] si tu ne fais qu'empiler des données. Voir
http://fr.php.net/manual/fr/language.ty ... .modifying
Je ne suis pas au courant de changements sur la gestion interne des tableaux entre PHP 4.4 et PHP 5.0, mais sache toutefois que créer un tableau de plusieurs (centaines de!) milliers d'entrée n'est pas une bonne idée en PHP. Non seulement ça prend énormément de mémoire mais en plus c'est très lent. Tu devrais peut-être chercher une autre approche, essaie de poster ce que tu fais réellement avec ce tableau, et pourquoi tu le fais, on pourra peut-être trouver une meilleure solution.
De plus, même si PHP est très flexible à ce sujet, une chaîne est une chaîne, et un nombre est un nombre (sauf en ce qui concerne les clés des tableaux, qui sont toutes des chaînes, mais c'est un autre problème). Si ton tableau doit contenir des nombres alors utilise des nombres, par exemple:
[php]// Ajouter un 0 au tableau
$elem[] = 0;
// Les résultats des bases de données sont toujours considérés comme
// des chaîne, convertir en nombre grâce à (int) ou intval()
// Par exemple, récupérons l'âge de tous nos utilisateurs
$sql = 'SELECT id, age FROM utilisateur';
$result = mysql_query($sql);
$age_utilisateurs = array();
while ($row = mysql_fetch_assoc($result))
{
$age_utilisateurs[$row['id']] = (int) $row['age'];
}[/php]
Au fait, inutile d'utiliser $elem[$i], tu peux faire un simple $elem[] si tu ne fais qu'empiler des données. Voir http://fr.php.net/manual/fr/language.types.array.php#language.types.array.syntax.modifying