2009-08-06 13 views
83

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

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

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

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

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

Lo anterior no tiene sentido para mí.

+0

I actualizado mi respuesta, olvidé la palabra clave 'arreglo'. –

+0

Relacionados: http://stackoverflow.com/questions/4758791/what-does-k-v-in-foreachex-as-k-v-mean –

+0

@Masi Error de mi lado. Lo siento. – kapa

Respuesta

105

=> es el separador de matrices asociativas. En el contexto de ese bucle foreach, asigna la clave de la matriz al $user y el 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 puede ser utilizado para arrays indexados numéricamente también.

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 
20

Significa asignar la clave de $ usuario y la variable de $ pasar

Cuando se asigna una matriz, que hace así

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

Se utiliza el mismo símbolo para las matrices de transformación en foreach declaraciones. El '=>' vincula la clave y el valor.

De acuerdo con PHP Manual, los pares clave/valor creados '=>'.

También, igual o mayor que es la manera opuesta: '> ='. En PHP, el signo mayor o menor que siempre va primero: '> =', '< ='.

Y solo como una nota al margen, excluir el segundo valor no funciona como crees que sería. En lugar de sólo le dio la clave En realidad, sólo 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" 
} 
+0

Su último ejemplo tiene algo mal, ya que aparece el mensaje de error 'Error de parse: error de sintaxis, inesperado T_DOUBLE_ARROW en /var/www/cha.php en la línea 2'. –

+0

Ooops Se olvidó de agregar la palabra clave Array. Intente eso –

3

$user_list es una matriz de datos que cuando se bucle a través se puede dividir en el mismo de nombre y valor.

En este caso, su nombre es $user y su valor es $pass.

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 silenciosamente lo hará por usted.Por lo tanto, la expresión que tiene arriba itera a través de $user_list, haciendo que la clave esté disponible como $user y el valor disponible como $pass como variables locales en el cuerpo del foreach.

11

Código como "a => b" significa, para una matriz asociativa (algunos idiomas, como Perl, si no recuerdo mal, llaman los "control"), 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án teniendo una matriz, llamada $user_list, y usted itere sobre él, obteniendo, para cada línea, la clave de la línea en $user, y 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"); 
} 

le conseguirá este resultado:

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

(estoy usando var_dump para generar una buena salida, que facilita debuging; 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 que para la mayoría de los idiomas derivados de C: C++, Java, PHP, ...


Como un consejo: Si usted apenas está comenzando con PHP, que sin duda debe pasar algún tiempo (tal vez un par de horas, tal vez incluso medio día o incluso un día entero) repasando algunas partes del manual :-)
¡Te ayudaría mucho!

6

una matriz en PHP es un mapa de teclas a los valores:

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

Si usted quiere hacer algo con cada valor de par clave en la matriz, puede utilizar la estructura foreach de control:

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

La variable $ array es la matriz que va a utilizar. Las variables $ key y $ value contendrán un par clave-valor en cada iteración del ciclo foreach. En este ejemplo, van a contener primera "amarilla" y 3, a continuación, "verde" y 4.

Se puede utilizar una anotación alternativa si no se preocupan por las teclas:

foreach ($array as $value) 
+0

¿Es "foreach" realmente un operador? Tienes una fuente? –

+0

Técnicamente hablando, es una estructura de control: http://php.net/manual/en/control-structures.foreach.php He actualizado la respuesta en consecuencia. – Scharrels