¿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í.


Actualicé mi respuesta, olvidé la palabra clave 'matriz'.
Tyler Carter


@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

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

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!


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)

¿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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.