Что означает «=>» в PHP?

99

Что означает =>оператор в следующем коде?

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

Код является комментарием на PHP.net. Пользователь не указывает значение $user_list, $userили $pass. Обычно я вижу, что это =>означает «равно или больше».

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

  1. обрабатывать список пользователей целыми числами
  2. таким образом, чтобы значение каждого пользователя было равно или больше пароля

Сказанное выше не имеет для меня смысла.

Лео Леопольд Герц 준영
источник
Я обновил свой ответ, забыл ключевое слово «массив».
Тайлер Картер,
По теме: stackoverflow.com/questions/4758791/…
Марк Грейвелл
@Masi Ошибка на моей стороне. Сожалею.
kapa
Я бы сказал, => присваивает значение массиву и использует ключ в качестве индекса. Итак, в вашем случае массив, который вы вызываете $ user_list, использует $ user в качестве ключа индекса. Цикл foreach зацикливается и присваивает каждому элементу в этом массиве значение $ pass.
Джулиан

Ответы:

126

=>является разделителем для ассоциативных массивов. В контексте этого цикла 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
Hobodave
источник
22

Это означает присвоение ключа $ user и переменной $ 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.
Лео Леопольд Герц 준영
Упс Забыл добавить ключевое слово массива. Попробуйте это
Тайлер Картер
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)


«Равно или больше» - это другой способ arround: «больше или равно», что написано на PHP, например; "> ="
То же самое для большинства языков, производных от C: C ++, JAVA, PHP, ...


В качестве совета: если вы только начинаете работать с PHP, вам обязательно нужно потратить некоторое время (может быть, пару часов, может быть, даже полдня или даже целый день), изучая некоторые части руководства :-)
Это ' буду вам очень помогать!

Паскаль МАРТИН
источник
6

Массив в PHP - это карта ключей к значениям:

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

Если вы хотите что-то сделать с каждой парой ключ-значение в вашем массиве, вы можете использовать foreachструктуру управления:

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

Переменная $ array - это массив, который вы будете использовать. Переменные $ 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.

Мидзу
источник