Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

490
Views
Dentro de una expresión foreach(), ¿el valor está definido antes o después de la clave?

En un bucle foreach() clásico después de la palabra as , ¿es posible usar la variable key como parte de la variable de value o viceversa?

* después de más de una década de desarrollo de PHP, recién ahora se me ocurrió investigar esta posibilidad.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Un foreach() siempre asigna la variable de value antes de asignar la variable key . ( Demostración )

Esto parece un poco contrario a la intuición porque $v parece estar declarado visualmente después de que se accede mediante declaración de key .

Esto significa que puede usar con seguridad:

 $array = ['a', 'b']; $result = []; foreach ($array as $result["prefix_$v"] => $v); var_export($result);

para producir:

 array ( 'prefix_a' => 0, 'prefix_b' => 1, )

La matriz recién generada tiene claves prefijadas basadas en los valores originales y los índices originales se convierten en los nuevos valores.

Sin el prefix_ a la cadena, la acción es efectivamente la misma que array_flip() .


Invertir las asignaciones para que la variable de value reciba la key no funciona según lo previsto. Es posible que desee generar ["prefix_0", "prefix_1"] pero no lo hace y también genera Avisos/Advertencias debido al intento de acceder a una variable no declarada. (La queja es solo en la primera iteración porque después de la primera iteración, se declara $k , es la clave de la iteración anterior).

 $array = ['a', 'b']; $result = []; foreach ($array as $k => $result["prefix_$k"]); // not defined on first iteration -------^^ var_export($result);

Mala salida:

 Warning: Undefined variable $k in /in/iVm1u on line 6 array ( 'prefix_' => 'a', 'prefix_0' => 'b', )

Para contexto adicional, ofreceré un ejemplo de trabajo más que genera una matriz multidimensional utilizando el valor para determinar las claves de la matriz en la matriz de salida. ( Demostración )

 $array = [2, 3, 5]; $result = []; foreach ($array as $result[$v * $v][$v] => $v); var_export($result);

Producción:

 array ( 4 => array ( 2 => 0, ), 9 => array ( 3 => 1, ), 25 => array ( 5 => 2, ), )
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!