¿Cómo crear una matriz estructurada desde un archivo Tabdelimited con PHP?

Tengo un problema con la lectura de un archivo delimitado por tabuladores.

La estructura en mi archivo es:

Field 1 Field 2 Field 3 Element11 Element12 Element13 Element21 Element22 Element23 Element31 Element32 Element33 

Desde este archivo, quiero crear una matriz con esta estructura:

 $csv = array( array( 'Field 1' => 'Element11', 'Field 2' => 'Element12', 'Field 3' => 'Element13', ), array( 'Field 1' => 'Element21', 'Field 2' => 'Element22', 'Field 3' => 'Element23', ), array( 'Field 1' => 'Element31', 'Field 2' => 'Element32', 'Field 3' => 'Element33', ) ); 

¿Cómo puedo hacer esto?

Para obtener también los encabezados como claves de matriz que necesita

 $result = array(); $fp = fopen('/path/to/file','r'); if (($headers = fgetcsv($fp, 0, "\t")) !== FALSE) if ($headers) while (($line = fgetcsv($fp, 0, "\t")) !== FALSE) if ($line) if (sizeof($line)==sizeof($headers)) $result[] = array_combine($headers,$line); fclose($fp); print_r($result); 

fgetcsv() :

 $result = array(); $fp = fopen('/path/to/file','r'); while (($line = fgetcsv($fp, 0, "\t")) !== FALSE) if ($line) $result[] = $line; fclose($fp); print_r($result); 

Si desea omitir la fila del encabezado, simplemente llame a fgets() una vez antes de ingresar al ciclo. O si desea que la matriz sea asociativa como se muestra arriba:

 $result = array(); $fp = fopen('/path/to/file','r'); $headers = fgetcsv($fp, 0, "\t"); $row = 0; while (($line = fgetcsv($fp, 0, "\t")) !== FALSE) if ($line) { for ($col = 0; isset($line[$col]); $col++) { $result[$row][$header[$col]] = $line[$col]; } $row++; } fclose($fp); print_r($result);