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

214
Vistas
La primera clave de la matriz asociativa de php devuelve un índice indefinido cuando se analiza desde CSV

Tengo problemas para acceder al primer índice de una matriz asociativa al analizar desde un csv.

CSV:

 ID,COLOR 1,Red 2,Green 3,Blue

PHP:

 function associative_array_from_csv($csv) { $rows = array_map('str_getcsv', file($csv)); $header = array_shift($rows); $array = array(); foreach($rows as $data) { $array[] = array_combine($header, $data); } return $array; } $colors = associative_array_from_csv($csv);

Ahora $colors devuelve:

 [ [ "ID" => "1", "COLOR" => "Red", ], [ "ID" => "2", "COLOR" => "Green ", ], [ "ID" => "3", "COLOR" => "Blue", ], ];

Pero si trato de acceder a la ID de cualquier color:

 $colors[0]["ID"] // returns undefined index: ID $colors[0]["COLOR"] // returns "Red"

Si recorro los colores, puedo acceder a la ID de esta manera:

 foreach($colors as $color) { print_r(reset($color)); // Prints the ID }

Pero, ¿por qué no puedo acceder a él directamente como $colors[0]["ID"] ?

Gracias

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tuve el mismo problema. El problema era que Excel agregaba un carácter oculto a la primera celda del documento, para codificar UTF-8 BOM.

Pude ver esto cuando se ejecuta:

 var_dump(json_encode($array));

Esto devolvería:

 string(312) "[{"\ufeffemail":"test@me.com","firstName":"import","lastName":"test"},{"\ufeffemail":"test@comcast.net","firstName":"import","lastName":"test"}]"

Para eliminar el carácter \ufeff, lo hice:

 $header = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $header);

En este caso, sería:

 function associative_array_from_csv($csv) { $rows = array_map('str_getcsv', file($csv)); $header = array_shift($rows); $header = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $header); $array = array(); foreach($rows as $data) { $array[] = array_combine($header, $data); } return $array; }
about 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