Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
los valores de clave de matriz se vacían/se ponen a cero inmediatamente después de ser asignados

Tengo un formulario que configura los valores del campo de entrada de la página usando PHP como:

 // create and fill inputVarsArr with keys that have empty vals $troubleInsertInputVarsArr = array_fill_keys(array('status', 'discoverDate', 'resolveDate', 'ticketIssued', 'eqptSystem', 'alarmCode', 'troubleDescription', 'troubleshootingSteps', 'resolveActivities', 'notes'), ''); if (isset ($_POST['insert'])) { // update DB site details foreach ($troubleInsertInputVarsArr as $key => $val) { if ($key !== 'discoverDate' && $key !== 'resolveDate') { //deal with dates separately below $val = $_SESSION[$key] = sanitizeText($_POST[$key]); echo '<br>(' . __LINE__ . ') ' . $key . ': ' . $val . ' '; } // close IF ; line 47 echo } // close FOREACH foreach ($troubleInsertInputVarsArr as $key => $val) { echo '<br>(' . __LINE__ . ') ' . $key . ': ' . $val . ' '; } // close FOREACH // line 52 echo }

Las variables de entrada se hicieron eco en el condicional if anidado en el ciclo foreach (echo' en la línea 47) se imprimen como esperaba (valores ingresados en los campos de entrada de la página del formulario):

 (47) status: Outstanding (47) ticketIssued: no (47) eqptSystem: Tower Lights (47) alarmCode: Visual (47) troubleDescription: - no description yet - (47) troubleshootingSteps: - no steps yet taken - (47) resolveActivities: - no activities yet decided - (47) notes: - no notes -

Pero luego los mismos pares key-val en la misma matriz se repiten en el ciclo foreach que sigue inmediatamente (se repite en la línea 52), sin que haya ocurrido ningún procesamiento adicional de variables, imprime valores vacíos para cada clave:

 (52) status: (52) discoverDate: (52) resolveDate: (52) ticketIssued: (52) eqptSystem: (52) alarmCode: (52) troubleDescription: (52) troubleshootingSteps: (52) resolveActivities: (52) notes:

De alguna manera, los valores clave de la matriz se ponen a cero justo después de que se asignan y no puedo entender cómo o por qué. ¿Alguien puede ver una razón obvia por la que esto podría estar ocurriendo?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

$val = $_SESSION[ $key ] = sanitizeText( $_POST[ $key ] ); line no cambia la matriz $troubleInsertInputVarsArr ya que $val es una copia del valor del elemento de la matriz, no una referencia.

Cambie el foreach para que $val sea una referencia.

foreach ( $troubleInsertInputVarsArr as $key => &$val ) {

over 4 years ago · Santiago Trujillo Denunciar

0

Nunca asigna valores a $troubleInsertInputVarsArr, solo claves. Podrías intentar esto:

 foreach ( $troubleInsertInputVarsArr as $key => $val ) { $troubleInsertInputVarsArr[$key] = sanitizeText( $_POST[ $key ]); if ( $key !== 'discoverDate' && $key !== 'resolveDate' ) { $val = $_SESSION[ $key ] = sanitizeText( $_POST[ $key ] ); echo '<br>(' . __LINE__ . ') ' . $key . ': ' . $val . ' '; } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda