Tu as regardé les Geocharts ?
Tu as regardé les Geocharts ?
Spalibrespalibrespalibrespalibrespalibrespalibresp alibrespalibrespalibrespalibrespalibrespalibrespal ibrespalibrespalibrespalibrespalibrespalibrespalib respalibrespalibrespalibrespalibrespalibrespalibre spalibrespalibrespalibrespalibrespalibrespalibresp alibrespalibrespalibrespalibrespalibrespalibrespal ibrespalibrespalibrespalibrespalibrespalibrespalib respalibrespalibrespalibrespalibrespalibrespalibre spalibrespalibrespalibrespalibrespalibrespalibresp alibrespalibrespalibrespalibrespalibrespalibrespal ibrespalibrespalibrespalibrespalibrespalibrespalib respalibrespalibrespalibrespalibrespalibrespalibre spalibrespalibrespalibrespalibrespalibrespalibresp alibrespalibrespalibrespalibrespalibre
---------- Post added at 14h16 ---------- Previous post was at 14h14 ----------
:Relance avec Leaflet:
http://leafletjs.com/examples/choropleth.html
Woaw... je viens de découvrir un truc en PHP :
Code:var_dump(0 == 'bonjour'); // bool(true)
Bon ben adieu le foreach($tableau) suivi d'un switch($key) avec $tableau qui contient à la fois des valeurs numériques et des strings.
Rust fanboy
moi.org
J'ai pas poussé très loin, mais si tu arrives à sélectionner le <path> qui correspond au pays que tu souhaites (genre avec du js), tu peux lui ajouter une classe et modifier sa propriété "fill". Mais j'suis pas sûr que tu puisses facilement sélectionner le path en question...
Très intéressant, je sais.
Non, il cast bonjour en int en fait.
C'est du bon goleri le cast implicite de php.
dans le cas de 'bonjour' == true, il va casté bonjour en bool par contre.
---------- Post added at 18h06 ---------- Previous post was at 18h04 ----------
Puis on peut en faire plein comme ça.
0 == '0'
0 == ''
'0' != ''
La signature de je sais plus qui.
Un comportement raisonnable et intuitif ? Je suis tout déçu.
http://php.net/manual/en/function.intval.php
Ah si, quand-même.Code:echo intval('042'); // 42 echo intval(042); // 34
Donc 42 != '052' mais 042 == '052'.
Tiens est-ce que quelqu'un saurait s'il est possible de savoir combien de références pointent vers un objet PHP ?
Par exemple :
Sauf que j'ai pas trouvé de fonction "get_num_references".Code:$a = new Foo(); $b = $a; get_num_references($b); // renvoie 2 (ou 3 s'il compte la copie qu'on envoie à la fonction)
J'ai énormément de mal à débugger un truc très bizarre qui se passe dans mon code. Ce genre de fonction me rendrait un immense coup de main.
Rust fanboy
J'ai pas réussi à trouver de doc là-dessus. Je pensais tricher en coloriant les autres pays, mais j'ai l'impression que tu ne peux pas mélanger les deux fonctions.
Pour le PHP, tant que les déclarations de variables ne seront pas typées, on pourra faire des conneries de ce genre.
@Tomaka : il te prend juste la valeur au moment où tu fais ton = , si tu changes la valeur de $a plus loin, $b ne changera pas.
Dernière modification par deathdigger ; 12/12/2012 à 20h48.
Ouai, je suis pas un débutant complet en PHP non plus hein
En fait je suis en train de me casser le crâne sur un truc.
J'ai une classe A dont une des variables membre est une classe B. Problème : parfois le destructeur de A est appelé avant celui de B.
J'ai mis des echo vraiment partout partout partout dans mon code, et je ne vois que deux possibilités : soit je ne comprends pas comment les destructeurs sont appelés, soit j'ai trouvé un bug dans php.
Pourtant il y a clairement écrit :
Ca veut bien dire que si je fais "$a = new Foo(); $a = null;", en principe le destructeur de Foo() est appelé immédiatement.Code:The destructor method will be called as soon as there are no other references to a particular object, or in any order during the shutdown sequence.
Rust fanboy
C'est ce que je me disais pour ton niveau, je trouvais ça bizarre
Si tu dis 'parfois', c'est que ça ne doit pas être un bug, sinon quand tu détruits ton objet, tu ne peux pas détruire l'autre avant à la mano ?
Hum, je crois que j'ai pigé (c'est l'effet forum, quand je post un truc sur lequel je me casse la tête depuis une heure, je trouve la solution derrière).
Quand il y a une référence circulaire, c'est à dire que A pointe vers B et B pointe vers A, les destructeurs ne sont appelés qu'au moment du shutdown ou de gc_collect_cycles(). Et à ce moment ils sont appelés dans un ordre aléatoire.
Il me reste à trouver où et comment B pourrait pointer vers A.
---------- Post added at 21h19 ---------- Previous post was at 21h14 ----------
En fait je dis "parfois" c'est selon si je change des tout petits détails dans mon script, du genre l'ordre des paramètres.
Mais comme j'utilise de la réflection à gogo dans ce code, c'est pas forcément bizarre.
Pour être plus précis, j'utilise simplement des filtres. C'est à dire que j'ai une classe "HTTPResponseGlobal", quand on appelle "appendData('prout')" elle fait simplement "echo 'prout';".
Ensuite j'ai une autre classe qui est par exemple "HTTPEtagFilter", qui stocke un pointeur vers un "HTTPResponseGlobal". Et quand on appelle "etagfilter->appendData('prout')" il va stocker le 'prout' dans un buffer. Et dans son destructeur (celui de HTTPEtagFilter) il va fabriquer le etag, l'envoyer avec responseGlobal->setHeader puis faire responseGlobal->appendData(le contenu du buffer).
Et mon problème c'est que j'ai une série de 3 ou 4 filtres l'un à la suite de l'autre, et qu'ils ne se détruisent pas dans l'ordre. Du coup ils recoivent chacun des données alors qu'ils ont déjà transmis leur buffer au filtre suivant.
---------- Post added at 21h33 ---------- Previous post was at 21h19 ----------
RHAAAA J'AI COMPRIS
Les putains de lambda-fonction en PHP capturent implicitement le $this.
En fait j'ai écrit un truc de ce genre :
Du coup A pointe vers B et B pointe vers A.Code:class A { public function __construct() { $this->b = new B(); $this->b->setMachin(function($x) { return $x + 1; }); // ce gros con de PHP capture implicitement $this là dedans } };
Rust fanboy
Yep ! Exercice final du semestre : un jeu du pendu en javascript. J'avais cherché un algorithme plus simple, mais je me suis finalement lancé dans la voie d'un collègue (plus en accord avec le libellé de l'exercice d'ailleurs) faut d'avoir trouvé une méthode qui évite la boucle d'opération. Voilà l’algorithme tel que formulé dans l'exercice :
je pensais justement la coder ainsi :
Et là je sèche pas mal. Je pensais mettre "motAffiche.charAt(i) == lettre" mais je doute que cela remplace les lettres de la chaîne motAffiche... J'ai lorgné du côté de "replace" mais je ne sais pas comment remplacer le bon "-".Code:<script> var motMystere = "transversalité" ; var motAffiche = "--------------" ; function decouvrirLettre() { var lettre = document.formulaire.saisie.value ; var solution = "" ; for (i = 0 ; i < 14 ; i++) { if (lettre == motMystere.chartAt(i)) { solution += lettre ; mot Affiche == } } } </script>
---------- Post added at 21h45 ---------- Previous post was at 21h42 ----------
Ah, je vois que je ne faisais pas ce qui était demandé. Je dois en fait écrire "solution += lettre". Mais reste le problème de remplacer les "-" par les lettres dans motAffiche.
Tu découpes et tu recolles
Mhh, merci du tuyau. Je pourrais suivre les instructions données mais je comprends pas trop la logique du truc... Je crois que je capte mal ce qui se passe dans la boucle.
---------- Post added at 21h53 ---------- Previous post was at 21h50 ----------
Mais bien sûr ! je pourrais faire tout cela avec match(), replace() et enfin search() !
EDIT : mais ce serait pas du tout comme demandé dans l'exercice je pense.
Bon, je suis un peu parti dans tous les sens mais là je crois tenir le bon bout :
Par contre, à la ligne en rouge, la console web de Firefox me dit que motAffiche est indéfini... Une idée d'où ça peut venir ?Code:<script> var motMystere = "transversalité" ; var motAffiche = "--------------" ; function decouvrirLettre() { var lettre = document.formulaire.saisie.value ; var solution = "" ; for (i = 0 ; i < 14 ; i++) { if (lettre == motMystere.charAt(i)) { solution += lettre ; } else { solution += motAffiche.charAt(i); } } var motAffiche = solution ; var lettre = "" ; if (solution.indexOf("-") == -1) { alert("Gagné !") ; } } </script>
Ne met pas de var en bas : "varmotAffiche = solution;"
Ca créerait une deuxième variable "motAffiche".
Firefox est omniscient et voit que tu utilises une variable qui sera déclarée plus bas, donc il te met une erreur au lieu d'utiliser la variable plus haut.
Rust fanboy
Aaah ! Retour aux discussion sur l'utilisation ou non de var. Je crois que je comprends mieux.
Reste que, même si j'ai plus d'erreurs, ça ne fait pas ce que je veux. Je pense que ça vient de 2 problèmes :
1) je dois effacer la lettre saisie. C'est vrai que c'est complètement idiot de simple de réinitialiser la variable lettre à "" puisque ça ne changera rien à l'affaire. Vous savez quelle commande efface le contenu de l'input text dans lequel l'utilisateur saisit sa lettre ?
2) il me manque d'afficher motAffiche à l'écran, ce que j'ai oublié de faire. Le truc, c'est qu'il me faudrait une commande qui écrive dans le input text readonly le mot Affiche. Je trifouille du côté de document.write mais je trouve rien qui m'indique comment faire une écriture dans l'input que j'ai nommé "solution". Vous arrivez à m'aiguiller ?
var c'est très simple, ça créé une variable qui existe uniquement à l'intérieur des { } dans lesquels on se trouve (et dans ceux à l'intérieur).
Quand tu accèdes à une variable, ça cherche s'il y en a une avec ce nom dans les {} en cours, si non dans les {} autour, si non dans les {} encore plus autour, etc. et si non, dans la liste des variables globales.
Ecrire dans un input : ton_input.value = le_truc_a_ecrire;
Vider un input : ton_input.value = '';
Rust fanboy