Que signifie «=>» en PHP?

99

Que signifie l' =>opérateur dans le code suivant?

foreach ($user_list as $user => $pass)

Le code est un commentaire sur PHP.net. L'utilisateur ne spécifie pas la valeur de $user_list, $userou $pass. Je vois normalement que cela =>signifie égal ou supérieur à.

Cependant, je ne suis pas sûr de son objectif ici car il n'est pas attribué. J'ai lu le code comme

  1. traiter une liste d'utilisateurs en nombres entiers
  2. de sorte que la valeur de chaque utilisateur soit égale ou supérieure au mot de passe

Ce qui précède n'a pas de sens pour moi.

Léo Léopold Hertz 준영
la source
J'ai mis à jour ma réponse, j'ai oublié le mot-clé 'array'.
Tyler Carter
En relation: stackoverflow.com/questions/4758791/…
Marc Gravell
@Masi Mistake de mon côté. Désolé.
kapa
Je dirais que => attribue une valeur au tableau et utilise une clé comme index. Donc, dans votre cas, le tableau que vous appelez $ user_list utilise $ user comme clé d'index. La boucle foreach boucle et affecte à chaque élément de ce tableau la valeur $ pass.
Julian

Réponses:

126

=>est le séparateur des tableaux associatifs. Dans le contexte de cette boucle foreach, il affecte la clé du tableau à $useret la valeur à $pass.

Exemple:

$user_list = array(
    'dave' => 'apassword',
    'steve' => 'secr3t'
);

foreach ($user_list as $user => $pass) {
    echo "{$user}'s pass is: {$pass}\n";
}
// Prints: 
// "dave's pass is: apassword"
// "steve's pass is: secr3t"

Notez que cela peut également être utilisé pour les tableaux indexés numériquement.

Exemple:

$foo = array('car', 'truck', 'van', 'bike', 'rickshaw');
foreach ($foo as $i => $type) {
    echo "{$i}: {$type}\n";
}
// prints:
// 0: car
// 1: truck
// 2: van
// 3: bike
// 4: rickshaw
Hobodave
la source
22

Cela signifie affecter la clé à $ user et la variable à $ pass

Lorsque vous attribuez un tableau, vous le faites comme ceci

$array = array("key" => "value");

Il utilise le même symbole pour traiter les tableaux dans les instructions foreach. Le '=>' relie la clé et la valeur.

Selon le manuel PHP , le '=>' a créé des paires clé / valeur.

En outre, égal ou supérieur à est la manière opposée: '> ='. En PHP, le signe supérieur ou inférieur à passe toujours en premier: '> =', '<='.

Et juste comme remarque, l'exclusion de la deuxième valeur ne fonctionne pas comme vous le pensez. Au lieu de ne vous donner que la clé, il ne vous donne en fait qu'une valeur:

$array = array("test" => "foo");

foreach($array as $key => $value)
{
    echo $key . " : " . $value; // Echoes "test : foo"
}

foreach($array as $value)
{
    echo $value; // Echoes "foo"
}
Tyler Carter
la source
1
Votre dernier exemple a quelque chose qui ne va pas, car je reçois le message d'erreur Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Léo Léopold Hertz 준영
Ooops J'ai oublié d'ajouter le mot-clé de tableau. Essayez ça
Tyler Carter
12

Un code comme "a => b" signifie, pour un tableau associatif (certains langages, comme Perl , si je me souviens bien, les appellent "hash") , que "a" est une clé et "b" une valeur.

Vous voudrez peut-être jeter un œil aux documentations de, au moins:

Ici, vous avez un tableau, appelé $user_list, et vous l'itérerez dessus, obtenant, pour chaque ligne, la clé de la ligne dans $useret la valeur correspondante dans $pass.

Par exemple, ce code:

$user_list = array(
    'user1' => 'password1',
    'user2' => 'password2',
);

foreach ($user_list as $user => $pass)
{
    var_dump("user = $user and password = $pass");
}

Vous obtiendrez cette sortie:

string 'user = user1 and password = password1' (length=37)
string 'user = user2 and password = password2' (length=37)

(J'utilise var_dumppour générer une belle sortie, qui facilite le débogage; pour obtenir une sortie normale, vous utiliseriez echo)


"Égal ou supérieur" est dans l'autre sens: "supérieur ou égal", qui s'écrit, en PHP, comme ceci; "> ="
La même chose pour la plupart des langages dérivés de C: C ++, JAVA, PHP, ...


En tant que conseil: Si vous êtes débutant avec PHP, vous devriez certainement passer un peu de temps (peut - être deux ou trois heures, peut - être même une demi - journée ou même une journée entière) en passant par certaines parties du manuel :-)
Ce d vous aider beaucoup!

Pascal MARTIN
la source
6

Un tableau en PHP est une carte de clés en valeurs:

$array = array();
$array["yellow"] = 3;
$array["green"] = 4;

Si vous voulez faire quelque chose avec chaque paire clé-valeur de votre tableau, vous pouvez utiliser la foreachstructure de contrôle:

foreach ($array as $key => $value)

La variable $ array est le tableau que vous utiliserez. Les variables $ key et $ value contiendront une paire clé-valeur à chaque itération de la foreachboucle. Dans cet exemple, ils contiendront d'abord "jaune" et 3, puis "vert" et 4.

Vous pouvez utiliser une notation alternative si vous ne vous souciez pas des clés:

foreach ($array as $value)
Scharrels
la source
"Foreach" est-il vraiment un opérateur? Avez-vous une source?
Peter Mortensen
Techniquement parlant, c'est une structure de contrôle: php.net/manual/en/control-structures.foreach.php J'ai mis à jour la réponse en conséquence.
Scharrels
4

Les tableaux en PHP sont des tableaux associatifs (également appelés dictionnaires ou hachages) par défaut. Si vous n'affectez pas explicitement une clé à une valeur, l'interpréteur le fera silencieusement pour vous. Ainsi, l'expression que vous avez là-haut est itérée $user_list, rendant la clé disponible en tant que $useret la valeur disponible en tant $passque variables locales dans le corps du fichier foreach.

Meredith L. Patterson
la source
3

$user_list est un tableau de données qui, lorsqu'il est bouclé, peut être divisé en son nom et sa valeur.

Dans ce cas, son nom est $useret sa valeur est $pass.

Mizu
la source