Что означает "=>" в PHP? - PullRequest
91 голосов
/ 07 августа 2009

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

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

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

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

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

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

Ответы [ 6 ]

120 голосов
/ 07 августа 2009

=> - разделитель для ассоциативных массивов. В контексте этого цикла 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 голосов
/ 07 августа 2009

Это означает присвоение ключа $ user и переменной $ pass

Когда вы присваиваете массив, вы делаете это так

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

Он использует тот же символ для обработки массивов в операторах foreach. '=>' Связывает ключ и значение.

Согласно Руководству по PHP *1009*, '=>' создает пары ключ / значение.

Кроме того, равно или больше, чем противоположное: '> ='. В PHP знак «больше» или «меньше» всегда идет первым: «> =», «<=». </p>

И, как примечание, исключение второго значения не работает так, как вы думаете. Вместо того, чтобы давать вам ключ, он на самом деле дает вам только значение:

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

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

foreach($array as $value)
{
    echo $value; // Echoes "foo"
}
12 голосов
/ 07 августа 2009

Код типа «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 голосов
/ 07 августа 2009

Массив в 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)
4 голосов
/ 07 августа 2009

Массивы в PHP по умолчанию являются ассоциативными массивами (иначе называемыми словарями или хэшами). Если вы не назначите ключу значение явно, интерпретатор сделает это за вас. Итак, выражение, которое вы получили, перебирает $user_list, делая ключ доступным как $user, а значение доступно как $pass в качестве локальных переменных в теле foreach.

3 голосов
/ 07 августа 2009

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

В данном случае это имя $user и значение $pass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...