¿Qué significa "=>" en PHP?

98

¿Qué significa el =>operador en el siguiente código?

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

El código es un comentario en PHP.net. El usuario no especifica el valor de $user_list, $usero $pass. Normalmente veo que eso =>significa igual o mayor que.

Sin embargo, no estoy seguro de su propósito aquí porque no está asignado. Leí el código como

  1. procesar una lista de usuarios en números enteros
  2. tal que el valor de cada usuario sea igual o mayor que la contraseña

Lo anterior no tiene sentido para mí.

Léo Léopold Hertz 준영
fuente
Actualicé mi respuesta, olvidé la palabra clave 'matriz'.
Tyler Carter
Relacionado: stackoverflow.com/questions/4758791/…
Marc Gravell
@Masi Error de mi lado. Lo siento.
kapa
Yo diría que => asigna un valor a la matriz y usa una clave como índice. Entonces, en su caso, la matriz a la que llama $ user_list usa $ user como clave de índice. El bucle foreach se repite y asigna a cada elemento de esa matriz el valor $ pass.
Juliano

Respuestas:

125

=>es el separador de matrices asociativas. En el contexto de ese bucle foreach, asigna la clave de la matriz ay $userel valor a $pass.

Ejemplo:

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

Tenga en cuenta que esto también se puede utilizar para matrices indexadas numéricamente.

Ejemplo:

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

Significa asignar la clave a $ user y la variable a $ pass

Cuando asigna una matriz, lo hace así

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

Utiliza el mismo símbolo para procesar matrices en declaraciones foreach. El '=>' vincula la clave y el valor.

Según el Manual de PHP , el '=>' creó pares clave / valor.

Además, Igual o Mayor que es la forma opuesta: '> ='. En PHP, el signo mayor o menor que siempre va primero: '> =', '<='.

Y como nota al margen, excluir el segundo valor no funciona como crees. En lugar de solo darle la clave, en realidad solo le da un 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
fuente
1
Su último ejemplo tiene algo mal, ya que recibo el mensaje de error Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2.
Léo Léopold Hertz 준영
Ooops Olvidé agregar la palabra clave de matriz. Prueba eso
Tyler Carter
12

Un código como "a => b" significa, para una matriz asociativa (algunos lenguajes, como Perl , si recuerdo bien, los llaman "hash") , que 'a' es una clave y 'b' un valor.

Es posible que desee echar un vistazo a la documentación de, al menos:

Aquí, está teniendo una matriz, llamada $user_list, y la iterará, obteniendo, para cada línea, la clave de la línea $usery el valor correspondiente en$pass .

Por ejemplo, este código:

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

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

Obtendrá esta salida:

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

(Lo estoy usando var_dumppara generar una salida agradable, que facilita la depuración; para obtener una salida normal, usaría echo)


"Igual o mayor" es al revés: "mayor o igual", que está escrito, en PHP, así; "> ="
Lo mismo para la mayoría de los lenguajes derivados de C: C ++, JAVA, PHP, ...


Como consejo: si recién está comenzando con PHP, definitivamente debería dedicar algo de tiempo (tal vez un par de horas, tal vez incluso medio día o incluso un día entero) revisando algunas partes del manual :-)
It ' ¡Te ayudaría mucho!

Pascal MARTIN
fuente
6

Una matriz en PHP es un mapa de claves a valores:

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

Si desea hacer algo con cada par clave-valor en su matriz, puede usar la foreachestructura de control:

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

La variable $ array es la matriz que utilizará. Las variables $ key y $ value contendrán un par clave-valor en cada iteración delforeach ciclo. En este ejemplo, primero contendrán "amarillo" y 3, luego "verde" y 4.

Puede usar una notación alternativa si no le importan las claves:

foreach ($array as $value)
Ardillas
fuente
¿Es "foreach" realmente un operador? Tienes una fuente?
Peter Mortensen
Técnicamente hablando, es una estructura de control: php.net/manual/en/control-structures.foreach.php He actualizado la respuesta en consecuencia.
Scharrels
4

Las matrices en PHP son matrices asociativas (también conocidas como diccionarios o hashes) de forma predeterminada. Si no asigna explícitamente una clave a un valor, el intérprete lo hará silenciosamente por usted. Entonces, la expresión que tiene allí arriba itera $user_list, haciendo que la clave esté disponible como $usery el valor esté disponible como $passcomo variables locales en el cuerpo del foreach.

Meredith L. Patterson
fuente
3

$user_list es una matriz de datos que, cuando se recorre en bucle, se puede dividir en su nombre y valor.

En este caso, su nombre es $usery su valor es $pass.

Mizu
fuente