unset de tableau de tableaux... rassurez moi - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : unset de tableau de tableaux... rassurez moi (/showthread.php?tid=4797) |
unset de tableau de tableaux... rassurez moi - Ter Rowan - 07-05-2010 Hello je crains d'avoir de mauvaises croyances sur le unset aussi, pouvez vous me dire si un exemple du code que je produis donne le bon comportement (je crains surtout de laisser en mémoire des éléments inutiles après mon unset) Code PHP :
et donc la question : est ce que j'efface correctement mon tableau des consommations spécifiques d'un acteur, est ce que j en oublie, est ce que j'en efface trop (à cause du $this->_consoByActeur[$idActeur] = $this->_conso; ) ? merci d'avance ! RE: unset de tableau de tableaux... rassurez moi - jo_link_noir - 08-05-2010 Salut, Unset va juste supprimé la variable demandé : la consommation de l'acteur. Et _conso ne sera pas modifier, c'est 2 variables différentes. Au passage, tu peux récupéré les variables par référence dans le foreach
Faudra juste ne pas réutilisé $valeur au risque de changé la valeur de la dernière référence (à moins de faire unset($valeur); pour la supprimé ;o))EDIT : trouvé ça sur la doc à propos du foreach RE: unset de tableau de tableaux... rassurez moi - Ter Rowan - 10-05-2010 merci pour ton intervention et désolé pour le retard de ma réponse j'étais en week end sans internet pour une fois ^^ donc ok pour la préservation de _conso, je m'en doutais un peu, mais une confirmation est toujours "apaisante" par contre, je n'ai peut être pas compris mais je ne vois pas si le unset nettoie bien tout. Je vais refaire avec un exemple plus basique maintenant soit : $a[0][0] = new toto(50); $a[1][0] = new toto(150); $a[2][0] = new toto(250); $a[0][1] = new toto(350); $a[1][1] = new toto(450); $a[2][1] = new toto(550); si je fais unset($a[1]) par exemple en interrogeant $a je verrais $a[0][0] = toto50; // un objet quelconque $a[2][0] = toto250; $a[0][1] = toto350; $a[2][1] = toto550; d'un point de vue programme, je ne sais plus accèder à "toto 150 et toto 250" (imaginons pas de copie n'y rien) mais est ce que pour autant les zones mémoires qui stockent toto150 et toto450 ont bien été vidées et sont réutilisables ? J'ai de vieilles résurgences quand j'apprenais le C il y a dix ans, je me pose peut être des problèmes qui n'ont plus de sens avec les langages "plus récents" RE: unset de tableau de tableaux... rassurez moi - jo_link_noir - 11-05-2010 Salut, Ouais, c'est pas comme en c avec les pointeurs . Pour cet exemple basique toto 150 et toto 250 vont disparaitre, plus aucune variables ne pointent sur eux donc leurs destructeurs seront appelés et bye bye les totos ^-^. Y aura juste un problème dans le cas ou un objet A contient un objet B qui contient le même objet A. Avec un unset les 2 objets n'auront plus aucunes variables qui les désignes, mais ils ne seront pas supprimés. Si tu veux je te montre un exemple ? RE: unset de tableau de tableaux... rassurez moi - Ter Rowan - 12-05-2010 (11-05-2010, 11:43 PM)jo_link_noir a écrit : Salut, non pour cet exemple c est bon , j ai déjà vu un post sur cette référence circulaire, faut juste espérer qu'ils soient détruits à la fin du script proprement ^^ |