2009-08-06 17 views
83

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

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, $user ou $ pass. Je vois normalement que => signifie égale ou supérieure à.

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

    processus
  1. une liste d'utilisateurs dans des entiers
  2. tels que la valeur de chaque utilisateur est égale ou supérieure à un mot de passe

ci-dessus ne me fait pas de sens.

+0

Je mis à jour mon répondre, j'ai oublié le mot clé 'array'. –

+0

Connexe: http://stackoverflow.com/questions/4758791/what-does-k-v-in-foreachex-as-k-v-mean –

+0

@Masi Erreur de mon côté. Pardon. – kapa

Répondre

105

=> est le séparateur pour les tableaux associatifs. Dans le contexte de cette boucle foreach, il attribue la clé du tableau à $user et 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 être utilisé pour les tableaux indexés numériquement trop.

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 
20

Cela signifie attribuer la clé utilisateur $ et la variable $ passer

Lorsque vous attribuez un tableau, vous faites comme ça

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

Il utilise le même symbole pour les tableaux de traitement dans foreach déclarations. Le '=>' lie la clé et la valeur.

Selon le PHP Manual, les paires clé/valeur créées '=>' ont été créées.

Également, égal ou supérieur à l'opposé: '> ='. En PHP, le signe supérieur ou inférieur passe toujours en premier: '> =', '< ='.

Et juste comme une remarque, excluant la deuxième valeur ne fonctionne pas comme vous le pensez. Au lieu de seulement vous donner la clé, il fait seulement vous donne 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" 
} 
+0

Votre dernier exemple a quelque chose de mal, car j'obtiens le message d'erreur "Erreur d'analyse: erreur de syntaxe, inattendue T_DOUBLE_ARROW dans /var/www/cha.php sur la ligne 2". –

+0

Ooops Oublié d'ajouter le mot-clé Array. Essayez cela –

3

$user_list est une matrice de données qui, lorsqu'il est bouclé peut être divisé en son nom et la valeur. Dans ce cas, le nom est $user et sa valeur est $pass.

4

Les tableaux en PHP sont des tableaux associatifs (autrement dit des dictionnaires ou des hachages) par défaut. Si vous n'attribuez pas explicitement une clé à une valeur, l'interpréteur la fera silencieusement pour vous.Ainsi, l'expression que vous avez là itère à travers $user_list, rendant la clé disponible comme $user et la valeur disponible comme $pass comme variables locales dans le corps du foreach.

11

code comme "a => b" signifie, pour un tableau associatif (certaines langues, comme Perl, si je me souviens bien, appeler les "hachage"), qui 'a' est une clé, et « b ' une valeur.

Vous pouvez jeter un oeil à la documentation de, au moins:

Ici, vous rencontrez un tableau, appelé $user_list, et vous parcourir par-dessus, en obtenant, pour chaque ligne, la clé de la ligne en $user, et la valeur correspondante en $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 ainsi cette sortie:

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

(j'utilise var_dump pour générer une sortie agréable, qui facilite debuging, pour obtenir un sortie normale, vous utiliseriez echo)


"Equal ou supérieur" est l'inverse: "plus grand ou égal", qui est écrit, en PHP, comme ceci; « > = »
La même chose pour la plupart des langues dérivées de C: C++, JAVA, PHP, ...


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

6

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

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

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

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

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

Vous pouvez utiliser une autre notation si vous ne vous souciez pas les clés:

foreach ($array as $value) 
+0

Est-ce que "foreach" est vraiment un opérateur? Avez-vous une source? –

+0

Techniquement parlant, c'est une structure de contrôle: http://php.net/manual/fr/control-structures.foreach.php J'ai mis à jour la réponse en conséquence. – Scharrels