Agrupación de entrada de CSV por columnas

Soy Sharam, estudiante de intercambio actual en Europa de un club extracurricular que aborda la política y los problemas relacionados con la juventud del sudeste asiático. En nuestro grupo tenemos nuevos voluntarios en todo el mundo cada mes y hemos configurado un servidor central para categorizar y priorizar tareas que el club debe haber desempeñado en el futuro para tener sentido en nuestro país. Tengo poco conocimiento en PHP, pero estoy ansioso por aprender, este es mi problema …

Debido a que SQL es demasiado complejo, usamos CSV. Todos pueden editar CSV maestros y agregarle tareas como aquí:

Priority,Task,Person High,Campus flyers,Ashley High,Test videocall with teacher,Sharam Low,New Website,Martin & Aneet Medium,Auditorium recruiting,Martin & Aneet & Ashley Low,Garbage collecting,Sharam & Ashley High,Ask permission to reserve classroom Sat & Sun,Sharam 

Como puede ver, la prioridad del artículo es alta, media y baja en cualquier orden. Intenté array_merge_recursive () pero quizás lo estoy haciendo mal:

  $data[1], $data[2])); } } fclose($file); ?> 

El resultado está mezclado y me falta cómo hacer la entrada CSV agrupada por columna como aquí:

 High priority tasks: 1. Campus flyers (Ashley) 2. Test videocall with teacher (Sharam) 3. Ask permission to reserve classroom Sat & Sun (Sharam) Medium priority tasks: 1. Auditorium recruiting (Martin & Aneet & Ashley) Low priority tasks: 1. New Website (Martin & Aneet) 2. Garbage collecting (Sharam & Ashley) 

A mi código le falta una parte de presentación, pero no es la parte difícil. HTML es fácil para mí, pero tengo un problema con la matriz agrupada correctamente. ¿Cómo puedo lograrlo? Gracias

Perdón por mis gramáticas y deletreo, ¡recién estoy aprendiendo el segundo año de inglés! –Sharam

Cree una matriz que tenga la columna más a la izquierda como su índice, y cada entrada de esa matriz es el rest de los datos de la fila.

 $result = array(); while (!feof($file)) { $data = fgetcsv($file, 1000, ","); $key = array_shift( $data); if( !isset( $result[ $key ])) { $result[ $key ] = array(); } $result[ $key ][] = $data; } 

Ahora, para imprimirlo, esto es todo lo que tienes que hacer:

 foreach( $result as $priority => $entries) { echo $priority . ' priority tasks' . "\n"; foreach( $entries as $i => $entry) { echo "$i. {$entry[0]} ({$entry[1]})\n"; } echo "\n"; } 

Mira mi clase PHP: http://pastebin.com/KVcYxuXY

Así es como se usa

 < ?php require_once('CSV_parser.php'); // path to your csv file $parser = new CSV_parser('c:/sample.csv'); // Result an array $parser->toArray(); // To table $parser->toTable(); // To JSON $parser->toJSON(); ?>