O que “=>” significa em PHP?

98

O que o =>operador quer dizer no código a seguir?

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

O código é um comentário em PHP.net. O usuário não especifica o valor de $user_list, $userou $pass. Normalmente vejo que =>significa igual ou maior que.

No entanto, não tenho certeza sobre seu propósito aqui porque não foi atribuído. Eu li o código como

  1. processar uma lista de usuários em números inteiros
  2. de forma que o valor de cada usuário seja igual ou maior que a senha

O acima exposto não faz sentido para mim.

Léo Léopold Hertz 준영
fonte
Eu atualizei minha resposta, esqueci a palavra-chave 'array'.
Tyler Carter
Relacionado: stackoverflow.com/questions/4758791/…
Marc Gravell
@Masi Mistake do meu lado. Desculpe.
kapa
Eu diria que => atribui um valor ao array e usa uma chave como índice. Portanto, no seu caso, o array que você chama de $ user_list usa $ user como uma chave de índice. O loop foreach faz um loop e atribui a cada elemento dessa matriz o valor $ pass.
Juliano

Respostas:

125

=>é o separador para matrizes associativas. No contexto desse loop foreach, ele atribui a chave do array a $usere o valor a $pass.

Exemplo:

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

Observe que isso também pode ser usado para matrizes indexadas numericamente.

Exemplo:

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

Significa atribuir a chave a $ user e a variável a $ pass

Quando você atribui uma matriz, você faz assim

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

Ele usa o mesmo símbolo para o processamento de matrizes em instruções foreach. O '=>' vincula a chave e o valor.

De acordo com o Manual do PHP , o '=>' criou pares de chave / valor.

Além disso, Igual ou Maior que é o caminho oposto: '> ='. No PHP, o sinal de maior ou menor que sempre vai primeiro: '> =', '<='.

E apenas como uma observação lateral, excluir o segundo valor não funciona como você pensa. Em vez de apenas fornecer a chave, na verdade, apenas fornece um valor:

$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
fonte
1
Seu último exemplo tem algo errado, pois recebo a mensagem de erro Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Léo Léopold Hertz 준영
Ooops Esqueci de adicionar a palavra-chave Array. Tente isso
Tyler Carter
12

Código como "a => b" significa, para uma matriz associativa (algumas linguagens, como Perl , se bem me lembro, chame-as de "hash") , que 'a' é uma chave e 'b' um valor.

Você pode querer dar uma olhada na documentação de, pelo menos:

Aqui, você tem uma matriz, chamada $user_list, e itera sobre ela, obtendo, para cada linha, a chave da linha em $usere o valor correspondente em $pass.

Por exemplo, este código:

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

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

Receberá esta saída:

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

(Estou usando var_dumppara gerar uma boa saída, que facilita a depuração; para obter uma saída normal, você usaria echo)


"Igual ou maior" é o contrário: "maior ou igual", que é escrito, em PHP, assim; "> ="
O mesmo para a maioria das linguagens derivadas de C: C ++, JAVA, PHP, ...


Como um conselho: se você está apenas começando com PHP, você definitivamente deve gastar algum tempo (talvez algumas horas, talvez até meio dia ou até mesmo um dia inteiro) examinando algumas partes do manual :-)
Isso ' te ajudaria muito!

Pascal MARTIN
fonte
6

Uma matriz em PHP é um mapa de chaves para valores:

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

Se quiser fazer algo com cada par de valores-chave em sua matriz, você pode usar a foreachestrutura de controle:

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

A variável $ array é o array que você usará. As variáveis ​​$ key e $ value conterão um par chave-valor em cada iteração do foreachloop. Neste exemplo, eles conterão primeiro "amarelo" e 3, depois "verde" e 4.

Você pode usar uma notação alternativa se não se importar com as chaves:

foreach ($array as $value)
Scharrels
fonte
"Foreach" é realmente um operador? Você tem uma fonte?
Peter Mortensen
Tecnicamente falando, é uma estrutura de controle: php.net/manual/en/control-structures.foreach.php Atualizei a resposta de acordo.
Scharrels
4

Arrays em PHP são arrays associativos (também conhecidos como dicionários ou hashes) por padrão. Se você não atribuir explicitamente uma chave a um valor, o intérprete fará isso silenciosamente para você. Portanto, a expressão que você obteve lá itera $user_list, disponibilizando a chave como $usere o valor disponível como $passvariáveis ​​locais no corpo do foreach.

Meredith L. Patterson
fonte
3

$user_list é um array de dados que, quando executado em loop, pode ser dividido em seu nome e valor.

Neste caso, seu nome é $usere seu valor é $pass.

Mizu
fonte