<?php
$csv = array_map('str_getcsv', file('filename.csv'));
for ($j = 1; $j < count($csv); $j++) {
for ($i = 0; $i < count($csv[0]); $i++) {
$myArray[$csv[0][$i].$j] = $csv[$j][$i];
}
}
print_r($myArray);
Не самое элегантное решение, но оно подойдет вам. Я использовал петли for
, чтобы мне было проще использовать их счетчики. Выходной результат:
Array
(
[firstName1] => test1
[lastName1] => Test1
[email1] => test1@gmail.com
[firstName2] => test2
[lastName2] => Test2
[email2] => test2@gmail.com
)
И мой CSV-файл выглядел так:
firstName,lastName,email
test1,Test1,test1@gmail.com
test2,Test2,test2@gmail.com
Первый цикл запускает счетчик с позиции 1, поэтому я избегаю заголовков и буду зацикливаться основной массив CSV.
Вложенный цикл будет проходить через каждый из вложенных массивов и на основе 1-го, который содержит информацию заголовка, объединит новые ключевые поля и создаст ваш новый массив.
Если вы хотите, чтобы оно было в точности , как в вашем примере, с квадратными скобками и счетчиком, начинающимся с 0 для ключевого поля, то вы можете просто: выведет для вас массив, как вы и просили в своем вопросе:
Array
(
[firstName[0]] => test1
[lastName[0]] => Test1
[email[0]] => test1@gmail.com
[firstName[1]] => test2
[lastName[1]] => Test2
[email[1]] => test2@gmail.com
)
syscolumns содержит метаданные столбца.
выберите * из syscolumns где имя =;
Идентификационный столбец в syscolumns является идентификатором таблицы столбца в sysobjects;
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and b.name = 'foo';
получает все столбцы для таблицы, названной 'нечто'. Тип = 'U' ограничивает его пользовательскими таблицами.
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and a.name = 'foo';
получает все столбцы, названные 'нечто'.
Актуальнейшая версия ASE будет использовать sysbojects
вместо systables