Was bedeutet "=>" in PHP?

98

Was bedeutet der =>Operator im folgenden Code?

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

Der Code ist ein Kommentar bei PHP.net. Der Benutzer gibt den Wert von $user_list, $useroder nicht an $pass. Normalerweise sehe ich, dass =>dies gleich oder größer als ist.

Ich bin mir jedoch nicht sicher, wozu es hier dient, da es nicht zugewiesen ist. Ich habe den Code als gelesen

  1. Verarbeiten Sie eine Liste von Benutzern in Ganzzahlen
  2. so dass der Wert jedes Benutzers gleich oder größer als das Passwort ist

Das obige macht für mich keinen Sinn.

Léo Léopold Hertz 준영
quelle
Ich habe meine Antwort aktualisiert und das Schlüsselwort 'array' vergessen.
Tyler Carter
Siehe auch
Marc Gravell
@Masi Fehler auf meiner Seite. Es tut uns leid.
Kapa
Ich würde sagen => weist dem Array einen Wert zu und verwendet einen Schlüssel als Index. In Ihrem Fall verwendet das Array, das Sie $ user_list nennen, $ user als Indexschlüssel. Die foreach-Schleife durchläuft eine Schleife und weist jedem Element in diesem Array den Wert $ pass zu.
Julian

Antworten:

125

=>ist das Trennzeichen für assoziative Arrays. Im Kontext dieser foreach-Schleife weist sie den Schlüssel des Arrays zu$user und den Wert zu zu $pass.

Beispiel:

$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"

Beachten Sie, dass dies auch für numerisch indizierte Arrays verwendet werden kann.

Beispiel:

$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
quelle
22

Dies bedeutet, dass Sie den Schlüssel $ user und die Variable $ pass zuweisen

Wenn Sie ein Array zuweisen, gehen Sie folgendermaßen vor

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

Es verwendet dasselbe Symbol für die Verarbeitung von Arrays in foreach-Anweisungen. Das '=>' verbindet den Schlüssel und den Wert.

Laut PHP-Handbuch hat das '=>' Schlüssel / Wert-Paare erstellt.

Gleich oder größer als ist auch der umgekehrte Weg: '> ='. In PHP steht immer das Vorzeichen größer oder kleiner als zuerst: '> =', '<='.

Und nur als Randnotiz: Das Ausschließen des zweiten Werts funktioniert nicht so, wie Sie es sich vorstellen. Anstatt Ihnen nur den Schlüssel zu geben, gibt es Ihnen tatsächlich nur einen Wert:

$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
quelle
1
Ihr letztes Beispiel hat etwas falsch gemacht, da ich die Fehlermeldung bekomme Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Léo Léopold Hertz 준영
Hoppla, ich habe vergessen, das Array-Schlüsselwort hinzuzufügen. Versuchen Sie das
Tyler Carter
12

Code wie "a => b" bedeutet für ein assoziatives Array (einige Sprachen wie Perl nennen , wenn ich mich richtig erinnere, diese "Hash") , dass 'a' ein Schlüssel und 'b' ein Wert ist.

Vielleicht möchten Sie sich zumindest die folgenden Dokumentationen ansehen:

Hier haben Sie ein Array, das aufgerufen wird $user_list, und Sie werden darüber iterieren und für jede Zeile den Schlüssel der Zeile in $userund den entsprechenden Wert in erhalten $pass.

Zum Beispiel dieser Code:

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

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

Erhalten Sie diese Ausgabe:

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

(Ich verwende var_dump, um eine schöne Ausgabe zu generieren, die das Debuggen erleichtert. Um eine normale Ausgabe zu erhalten, würden Sie verwenden. echo)


"Gleich oder größer" ist umgekehrt: "größer oder gleich", was in PHP so geschrieben ist; "> ="
Dasselbe gilt für die meisten Sprachen, die von C abgeleitet sind: C ++, JAVA, PHP, ...


Als Ratschlag: Wenn Sie gerade erst mit PHP beginnen, sollten Sie auf jeden Fall einige Zeit (vielleicht ein paar Stunden, vielleicht sogar einen halben Tag oder sogar einen ganzen Tag) damit verbringen, einige Teile des Handbuchs durchzugehen :-)
Es ' Ich würde dir sehr helfen!

Pascal MARTIN
quelle
6

Ein Array in PHP ist eine Zuordnung von Schlüsseln zu Werten:

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

Wenn Sie mit jedem Schlüssel-Wert-Paar in Ihrem Array etwas unternehmen möchten, können Sie das verwenden foreach Kontrollstruktur verwenden:

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

Die Variable $ array ist das Array, das Sie verwenden werden. Die Variablen $ key und $ value enthalten in jeder Iteration der foreachSchleife ein Schlüssel-Wert-Paar . In diesem Beispiel enthalten sie zuerst "gelb" und 3, dann "grün" und 4.

Sie können eine alternative Notation verwenden, wenn Sie sich nicht für die Schlüssel interessieren:

foreach ($array as $value)
Scharrels
quelle
Ist "foreach" wirklich ein Operator? Hast du eine Quelle?
Peter Mortensen
Technisch gesehen handelt es sich um eine Kontrollstruktur: php.net/manual/en/control-structures.foreach.php Ich habe die Antwort entsprechend aktualisiert.
Scharrels
4

Arrays in PHP sind standardmäßig assoziative Arrays (auch als Wörterbücher oder Hashes bezeichnet). Wenn Sie einem Wert keinen Schlüssel explizit zuweisen, erledigt der Interpreter dies stillschweigend für Sie. Der Ausdruck, den Sie dort oben haben, durchläuft $user_listden Schlüssel $userund stellt den Schlüssel als und den Wert $passals lokale Variablen im Hauptteil des zur Verfügung foreach.

Meredith L. Patterson
quelle
3

$user_list ist ein Array von Daten, die beim Durchlaufen in ihren Namen und Wert aufgeteilt werden können.

In diesem Fall ist der Name $userund der Wert $pass.

Mizu
quelle