Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 14-06-2012 21:48:18

Dunatotatos
Membre
Lieu : Arabie Saoudite
Distrib. : Sid
Noyau : linux-image-amd64
(G)UI : tty
Inscription : 24-04-2012

Incompréhension d'un code PHP

Salut à tous,

J'ai ce code PHP :

function get_value($values, $field = NULL) {
    $alias = isset($field) ? $this->aliases[$field] : $this->field_alias;
    if (isset($values->{$alias})) {
      return $values->{$alias};
    }
  }


où $values est un tableau et $alias une chaîne de caractère.
Mais je ne comprends pas ce que veut dire $values->{$alias}

Pourriez-vous m'aider ?
Merci d'avance
Duna


Never trust Windows output.

Hors ligne

#2 14-06-2012 22:40:57

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : Incompréhension d'un code PHP

Yep!

Comme j'écris plutôt en C et python, et que je n'ai pas fait de PHP depuis belle lurette, mon interpretation est à prendre avec des pincettes.

Donc :

$values->{$alias}


Signifie qu'on stocke à l'adresse mémoire $values la valeur de $alias (ou l'adresse de $alias). Il s'agit ni plus ni moins d'une égalité faisant appelle à une structure ou à un paramètre.

if (isset($values->{$alias})) {
      return $values->{$alias};
    }


Si la valeur stockée à l'adresse mémoire $values correspond à la valeur de $alias, alors on retourne la valeur de $values qui est égale à $alias.
(En C : le pointeur est égale à l'adresse de la variable pointée ou quelque chose comme çà.)

D'ailleurs, l'utilisation de $this dans la condition aurait dû te donner la puce à l'oreille, $this = objet en cours lors de l'appel d'un attribut de l'objet ou d'une méthode. $this hérite de facto de toute la classe ou structure dont il dépend.

En C, j'aurais pû te parler de pointeur cool

@+

Zoroastre.

Dernière modification par zoroastre74 (14-06-2012 23:04:54)

Hors ligne

#3 16-06-2012 22:02:35

Dunatotatos
Membre
Lieu : Arabie Saoudite
Distrib. : Sid
Noyau : linux-image-amd64
(G)UI : tty
Inscription : 24-04-2012

Re : Incompréhension d'un code PHP

Salut,

Merci pour ta réponse.
Grâce à toi, je crois avoir trouvé ce que c'est. Il me semblait que les pointeurs en PHP n'existaient pas (ou en tout cas n'étaient pas manipulables directement), et j'ai trouvé une autre explication. Les accolades en PHP ne sont-elles pas de manière générale utilisée pour séparer les variables et éviter les confusions ? Du coup, ça servirait juste à accéder à une certaine case du tableau $values...

(Je me fourvoie peut-être)

Never trust Windows output.

Hors ligne

#4 16-06-2012 22:35:25

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : Incompréhension d'un code PHP

Yep!

Oui mais on peut aussi accéder ainsi à un attribut contenu dans une case du tableau.

Si tu déclares un tableau de coordonnées, genre :

      -- 0 --           -- 1 --
{(x1, y1, z1), (x2, y2, z2), ... }

Dans une méthode de base, par itération entre autre au 1er niveau, tu auras beau chercher x2, tu n'auras jamais de retour car il fait partie d'un sous-ensemble (niveau 2).

La fonction telle qu'elle est écrite et comme je la ressent, réalise la recherche en considérant tout élement du tableau comme héritant d'une classe ou d'une structure. Ce qui te permet, à priori, de pouvoir retirer des élements sur tout type de tableau.

@+

Zoroastre.

Dernière modification par zoroastre74 (16-06-2012 22:41:27)

Hors ligne

#5 17-06-2012 17:37:13

Dunatotatos
Membre
Lieu : Arabie Saoudite
Distrib. : Sid
Noyau : linux-image-amd64
(G)UI : tty
Inscription : 24-04-2012

Re : Incompréhension d'un code PHP

Ah oui !
J'ai compris. Merci pour ton explication smile

Never trust Windows output.

Hors ligne

Pied de page des forums