У меня есть файл csv, который я хочу использовать с php. Первое в csv – имена столбцов. Все разделяется запятыми.
Я хочу иметь возможность помещать имена столбцов в качестве имени массива, и все значения для этого столбца будут находиться под этим именем массива. Поэтому, если в столбце 1 было 20 строк, я мог бы сделать column1 [0], и первый экземпляр (а не имя столбца) будет отображаться для столбца1.
Как мне это сделать?
Вы хотите, чтобы fgetcsv
получал каждую строку CSV-файла в виде массива. Поскольку вы хотите, чтобы каждый столбец был в своем собственном массиве, вы можете извлечь элементы из этого массива и добавить его в новый массив (ы), представляющий столбцы. Что-то вроде:
$col1 = array(); while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { $col1[] = $row[0]; }
Кроме того, вы можете прочитать весь CSV-файл, используя fgetcsv
в 2D-матрицу (если файл CSV не слишком велик):
$matrix = array(); while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { $matrix[] = $row; }
а затем извлеките нужные столбцы в свои собственные массивы:
$col1 = array(); for($i=0;$i<count($matrix);$i++) { $col1[] = $matrix[0][i]; }