2 столбца из каждой строки
Если ваша цель состоит в том, чтобы получить 2 столбца из каждой строки, вам придется перебирать все строки. Лучше всего немедленно выполнить любые необходимые операции, а не сбрасывать строки в массив (так как это быстро израсходует память, если несколько пользователей смогут одновременно запустить этот скрипт).
Единственный способ сделать это намного быстрее - это кешировать результаты заранее. Вы можете загрузить CSV в таблицу базы данных и индексировать столбцы, например.
2 столбца из строки, соответствующей идентификатору
Вы можете сделать это довольно быстро, выполнив поиск по регулярному выражению, а не анализируя весь файл. Например, если вы поместите идентификатор в первый столбец, вы можете сделать что-то вроде этого:
// note that because we use file_get_contents, the file must fit in memory!
// if multiple users are hitting this at the same time, it could be a valid concern
preg_match("/^$sanitized_id/" file_get_contents('filename.csv'), $matches);
if( count($matches) > 1 ) {
$row_values = explode("\t", $matches[1]);
var_dump($row_values);
}
else {
print "No matches";
}
С другой стороны, если у вас есть доступ к файлу заранее, вы можете сделать то же, что и выше, и проиндексировать результаты в таблице базы данных, что делает поиск быстрым и простым.