Що означає "=>" у PHP?


98

Що означає =>оператор у наступному коді?

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

Код - це коментар на PHP.net. Користувач не вказує значення $user_list, $userабо $pass. Я зазвичай бачу, що це =>означає рівне або більше, ніж.

Однак я не впевнений у його меті тут, оскільки він не призначений. Я читаю код як

  1. обробити список користувачів у цілих числах
  2. таким чином, що значення кожного користувача дорівнює або перевищує пароль

Сказане для мене не має сенсу.


Я оновив свою відповідь, забув ключове слово "масив".
Тайлер Картер


@ Масі Помилка на моєму боці. Вибачте.
капа

Я б сказав => присвоює значення масиву і використовує ключ як індекс. Тож у вашому випадку масив, який ви називаєте $ user_list, використовує $ user як індексний ключ. Цикл циклу foreach циклічно і присвоює кожному елементу в цьому масиві значення $ pass.
Джуліан

Відповіді:


125

=>є роздільником для асоціативних масивів. У контексті цього циклу foreach він присвоює ключ масиву до $userта значення для $pass.

Приклад:

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

Зауважте, що це може бути використане і для масивів, що індексуються числом.

Приклад:

$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

22

Це означає присвоїти ключ $ користувачеві та змінну $ pass

Призначаючи масив, ви робите це так

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

Він використовує той самий символ для обробки масивів у операторах foreach. '=>' Пов'язує ключ і значення.

Відповідно до Посібника з PHP , '=>' створили пари ключів / значень.

Також рівний або більший, ніж протилежний: '> ='. У PHP більший чи менший, ніж знак, завжди йде спочатку: '> =', '<='.

І так само, як і бічна примітка, виключення другого значення не працює так, як ви думаєте. Замість того, щоб дати вам лише ключ, він фактично лише дає вам значення:

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

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

foreach($array as $value)
{
    echo $value; // Echoes "foo"
}

1
У вашому останньому прикладі щось не так, оскільки я отримую повідомлення про помилку Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Лео Леопольд Герц 준영

Ooops Забули додати ключове слово Array. Спробуйте це
Тайлер Картер

12

Код типу "a => b" означає для асоціативного масиву (деякі мови, як, наприклад, Perl , якщо я правильно пам'ятаю, називають ці "хеш") , що "a" - це ключ, а "b" - значення.

Ви можете поглянути на документацію щонайменше:

Тут у вас є масив, який називається $user_list, і ви повторите його, отримуючи для кожного рядка ключ рядка в $userі відповідне значення в $pass.

Наприклад, цей код:

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

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

Ви отримаєте цей вихід:

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

(Я використовую var_dumpдля отримання хорошого результату, який полегшує налагодження; для отримання нормального результату ви б використовували echo)


"Рівний чи більший" - це інший спосіб: "більший або рівний", який написано в PHP, як це; "> ="
Те ж саме для більшості мов, похідних від C: C ++, JAVA, PHP, ...


Як порада: Якщо ви тільки починаєте з PHP, вам обов'язково слід витратити деякий час (можливо, пару годин, може, навіть півдня або навіть цілий день), переглядаючи деякі частини посібника :-)
Це ' я вам дуже допоможу!


6

Масив у PHP - це карта ключів до значень:

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

Якщо ви хочете зробити щось із кожною парою ключ-значення у своєму масиві, ви можете використовувати foreachструктуру управління:

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

Змінна $ масив - це масив, який ви будете використовувати. Змінні $ key та $ value будуть містити пари key-value у кожній ітерації foreachциклу. У цьому прикладі вони спочатку містять "жовтий" і 3, потім "зелений" і 4.

Ви можете використовувати альтернативне позначення, якщо вам не важливо клавіш:

foreach ($array as $value)

Чи справді "foreach" є оператором? У вас є джерело?
Пітер Мортенсен

Технічно кажучи, це структура управління: php.net/manual/en/control-structures.foreach.php Я відповідним чином оновив відповідь.
Scharrels

4

Масиви в PHP - це асоціативні масиви (інакше відомі як словники чи хеші) за замовчуванням. Якщо ви явно не призначите ключ значенню, перекладач мовчки зробить це за вас. Отже, вираз, який ви отримали там, повторює $user_list, роблячи ключ доступним як $userі значення доступним $passяк локальні змінні в тілі foreach.


3

$user_list це масив даних, який при перегляді через нього можна розділити на його ім'я та значення.

У цьому випадку це ім'я є, $userі це значення $pass.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.