Co oznacza „=>” w PHP?

99

Co oznacza =>operator w poniższym kodzie?

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

Kod jest komentarzem w PHP.net. Użytkownik nie określi wartości $user_list, $userlub $pass. Zwykle widzę, że =>oznacza to równe lub większe niż.

Nie jestem jednak pewien co do jego celu, ponieważ nie jest on przypisany. Kod odczytałem jako

  1. przetwarza listę użytkowników w liczbach całkowitych
  2. takie, że wartość każdego użytkownika jest równa lub większa niż hasło

Powyższe nie ma dla mnie sensu.

Léo Léopold Hertz 준영
źródło
Zaktualizowałem odpowiedź, zapomniałem słowa kluczowego „tablica”.
Tyler Carter
Związane z: stackoverflow.com/questions/4758791/…
Marc Gravell
@Masi Błąd po mojej stronie. Przepraszam.
kapa
Powiedziałbym, że => przypisuje wartość do tablicy i używa klucza jako indeksu. W twoim przypadku tablica, którą nazywasz $ user_list, używa $ user jako klucza indeksu. Pętla foreach zapętla i przypisuje każdemu elementowi tablicy wartość $ pass.
Julian

Odpowiedzi:

126

=>jest separatorem tablic asocjacyjnych. W kontekście tej pętli foreach przypisuje klucz tablicy do $useri wartość do $pass.

Przykład:

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

Zauważ, że może to być również używane do tablic indeksowanych numerycznie.

Przykład:

$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
źródło
22

Oznacza to przypisanie klucza do $ user, a zmiennej do $ pass

Kiedy przypisujesz tablicę, robisz to w ten sposób

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

Używa tego samego symbolu do przetwarzania tablic w instrukcjach foreach. Znak „=>” łączy klucz i wartość.

Zgodnie z podręcznikiem PHP , „=>” utworzono pary klucz / wartość.

Również równe lub większe niż jest odwrotny sposób: „> =”. W PHP znak „większe lub mniejsze niż” jest zawsze pierwszy: '> =', '<='.

I tak na marginesie, wykluczenie drugiej wartości nie działa tak, jak myślisz. Zamiast dawać tylko klucz, w rzeczywistości daje tylko wartość:

$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
źródło
1
W Twoim ostatnim przykładzie jest coś nie tak, ponieważ otrzymuję komunikat o błędzie Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Léo Léopold Hertz 준영
Ups, zapomniałem dodać słowa kluczowego tablicy. Spróbuj tego
Tyler Carter
12

Kod taki jak „a => b” oznacza tablicę asocjacyjną (niektóre języki, takie jak Perl , jeśli dobrze pamiętam, nazywają to „hash”) , że „a” jest kluczem, a „b” wartością.

Możesz rzucić okiem na dokumentację przynajmniej:

Tutaj masz tablicę, wywołaną $user_list, i będziesz ją iterować, uzyskując dla każdej linii klucz linii w$user i odpowiednią wartość w $pass.

Na przykład ten kod:

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

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

Otrzymasz to wyjście:

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

(Używam var_dumpdo generowania ładnego wyniku, który ułatwia debugowanie; aby uzyskać normalne wyjście, użyłbyś echo)


„Równe lub większe” to odwrotne określenie: „większe lub równe”, co jest napisane w PHP, w ten sposób; "> ="
To samo dla większości języków wywodzących się z C: C ++, JAVA, PHP, ...


Jako rada: jeśli dopiero zaczynasz z PHP, zdecydowanie powinieneś poświęcić trochę czasu (może kilka godzin, może nawet pół dnia lub nawet cały dzień) przeglądając niektóre części instrukcji :-)
To ' bardzo ci pomogę!

Pascal MARTIN
źródło
6

Tablica w PHP to mapa kluczy do wartości:

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

Jeśli chcesz coś zrobić z każdą parą klucz-wartość w swojej tablicy, możesz użyć foreachstruktury kontrolnej:

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

Zmienna $ array to tablica, której będziesz używać. Zmienne $ key i $ value będą zawierać parę klucz-wartość w każdej iteracji foreachpętli. W tym przykładzie najpierw będą zawierały „żółty” i 3, a następnie „zielony” i 4.

Możesz użyć alternatywnej notacji, jeśli nie dbasz o klucze:

foreach ($array as $value)
Scharrels
źródło
Czy „foreach” to naprawdę operator? Czy masz źródło?
Peter Mortensen
Technicznie rzecz biorąc, jest to struktura kontrolna: php.net/manual/en/control-structures.foreach.php Odpowiednio zaktualizowałem odpowiedź.
Scharrels
4

Tablice w PHP są domyślnie tablicami asocjacyjnymi (inaczej nazywanymi słownikami lub hashami). Jeśli nie przypiszesz klucza do wartości, interpreter po cichu zrobi to za Ciebie. Tak więc wyrażenie, które tam masz, przechodzi przez iterację $user_list, udostępniając klucz jako, $usera wartość $passjako zmienne lokalne w treści foreach.

Meredith L. Patterson
źródło
3

$user_list jest tablicą danych, które po zapętleniu można podzielić na nazwę i wartość.

W tym przypadku jest to nazwa $useri wartość to $pass.

Mizu
źródło