Ceci est une tentative d'implémentation en javascript de l'algorithme écrit par Olivier Miakinen en PHP. Ça ne fonctionne pas, Olivier as tu une idée de ce qui cloche?
Il est tard et je n'ai pas le temps de regarder en détail. Voici juste un truc qui m'a sauté aux yeux, sauf que je ne suis pas expert en JavaScript alors je ne sais pas comment corriger même si je suppose que c'est incorrect.
JavaScript :
[...]
for(i in liste)
{ refs = liste[i].refs;
[...] refs.pop();
Je parierais bien que le refs.pop() agit sur une copie locale de liste[i].refs au lieu de modifier le contenu de liste.
[...]
for(i in liste) { refs.pop();
Et là c'est encore pire : refs n'est même pas assigné.
PHP :
[...]
foreach ($liste as $id => &$refs) {
Note le « & » : copie par référence et non par valeur.
[...] array_pop($refs);
C'est donc array_pop($liste[$id]) et pas d'une copie.
[...] foreach ($liste as $id => &$refs) { // Le fait d'utiliser foreach est une bidouille, en réalité // on ne touche qu'au premier article avant de repartir au // début. array_pop($refs);
Idem.
Le 23/05/2013 15:17, Julien Arlandis a écrit :
Ceci est une tentative d'implémentation en javascript de l'algorithme
écrit par Olivier Miakinen en PHP. Ça ne fonctionne pas, Olivier as tu
une idée de ce qui cloche?
Il est tard et je n'ai pas le temps de regarder en détail. Voici juste
un truc qui m'a sauté aux yeux, sauf que je ne suis pas expert en
JavaScript alors je ne sais pas comment corriger même si je suppose
que c'est incorrect.
JavaScript :
[...]
for(i in liste)
{
refs = liste[i].refs;
[...]
refs.pop();
Je parierais bien que le refs.pop() agit sur une copie locale de
liste[i].refs au lieu de modifier le contenu de liste.
[...]
for(i in liste)
{
refs.pop();
Et là c'est encore pire : refs n'est même pas assigné.
PHP :
[...]
foreach ($liste as $id => &$refs) {
Note le « & » : copie par référence et non par valeur.
[...]
array_pop($refs);
C'est donc array_pop($liste[$id]) et pas d'une copie.
[...]
foreach ($liste as $id => &$refs) {
// Le fait d'utiliser foreach est une bidouille, en réalité
// on ne touche qu'au premier article avant de repartir au
// début.
array_pop($refs);
Ceci est une tentative d'implémentation en javascript de l'algorithme écrit par Olivier Miakinen en PHP. Ça ne fonctionne pas, Olivier as tu une idée de ce qui cloche?
Il est tard et je n'ai pas le temps de regarder en détail. Voici juste un truc qui m'a sauté aux yeux, sauf que je ne suis pas expert en JavaScript alors je ne sais pas comment corriger même si je suppose que c'est incorrect.
JavaScript :
[...]
for(i in liste)
{ refs = liste[i].refs;
[...] refs.pop();
Je parierais bien que le refs.pop() agit sur une copie locale de liste[i].refs au lieu de modifier le contenu de liste.
[...]
for(i in liste) { refs.pop();
Et là c'est encore pire : refs n'est même pas assigné.
PHP :
[...]
foreach ($liste as $id => &$refs) {
Note le « & » : copie par référence et non par valeur.
[...] array_pop($refs);
C'est donc array_pop($liste[$id]) et pas d'une copie.
[...] foreach ($liste as $id => &$refs) { // Le fait d'utiliser foreach est une bidouille, en réalité // on ne touche qu'au premier article avant de repartir au // début. array_pop($refs);