Задать вопрос

Чем заменить заменить case?

Не хочется быть говно кодером...
Пишу парсер прайс-листа .csv файла через fgetcsv.
Сам прайс - это около 13к строк и 15 колонок.

Перед тем как занести данные в базу, я их очищаю от лишний спецсимволов, пробелов и прочего мусора.

Параллельно на основе некоторых колонок формирую еще данные (чистый артикул, цена в валюте и прочее). Грубо говоря, скрипт импорта выполняет всю "грязную" работу, а сама CMS использует готовые данные.

Все было хорошо, пока не потребовалось распарсивать артикул товара.
В прайс листе присутствует одна конкретная категория. Но сам товар можно раскидать по другим фильтрам, например "красный шар для правши" имеет категорию "форма - шар".
Но в артикуле есть дополнительная информация, конкретно меня интересуют "2,3,4" символы.

Беру я их незамысловато
$artikul[1].$artikul[2].$artikul[3]

Затем сравниваю через switch case и прописываю русское название
switch ($artikul[1].$artikul[2].$artikul[3])
		{
		case "001" :	$data = "Группа 001"; break;
		case "002" :	$data = "Группа 002"; break;

		default :	$data = ""; break;
		}


Артикул проставлен у конкретного поставщика (всего их около 5-7), и естественно идет предварительная проверка. Если нужный производитель, парсим артикул.

42 секунды с switch
35 секунды без switch

Тонкое место именно "switch case", а "else if" усугубляет ситуацию совсем
  • Вопрос задан
  • 2671 просмотр
Подписаться 2 Оценить 1 комментарий
Решение пользователя evnuh К ответам на вопрос (4)
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Набор бессвязных фраз, а не вопрос. Пожалуйста, попробуйте задать вопрос в максимум одно предложение, не более 140 символов. Глядя на исходный код - в чём проблема сделать массив с ключами равными значениям 001 002, а значениями массива - то, что в $data?
Ответ написан