Всем привет, у меня появилось затруднение. Как использовать sscanf в MySQL а именно в одно поле записать несколько значений и их же потом использовать.
Всем привет, у меня появилось затруднение. Как использовать sscanf в MySQL а именно в одно поле записать несколько значений и их же потом использовать.
sscanf - обычная функция-разделитель, а-ля split. Просто более функциональная и удобная. Нужно лишь разок прочитать описание на странице sa-mp.com с плагином. Не понимаю откуда у вас столько проблем с этой самой обычной функцией...
Ну как? Сначала формируем строку из данных и разделяем эти данные каким-то особенным символом, которого нет в тех данных, что вы разделяете.
Например:
Смотрим на наши данные и понимаем, что в качестве разделителя не получится использовать числа "0, 1, 2, 3, 4, 6", буквы "я, л, е, г, н, д, а", черту (дефис/тире) и пробел. Значит пред нами открываются все остальные символы, которые мы могли бы использовать в качестве разделителя финальной строки.PHP код:
new number_1 = 10;
new number_2 = 6;
new number_3 = 142;
new number_4 = 13;
new string[12] = "Я - Легенда";
Использовать буквы или цифры не совсем целесообразно, ибо тогда данные будут сливаться и чтение/редактирование запакованной строки вручную окажется не самым удобным и приятным занятием. Поэтому от них мы откажемся. Значит стоит обратить свой взор на другие спец символы, которые бы не сливались с нашими данными. Допустим, мы взяли знак "точка с запятой (;)". Тогда наша финальная, запакованная строка будет выглядеть следующим образом: "10;6;142;13;Я - Легенда". Для хранения этой строки нам понадобится ещё один массив, который мы и создадим. Далее сформируем нашу строку с помощью функции format и запишем её в массив:
Всё. Теперь у нас есть запакованная строка с разными данными. Её уже и записываем куда нам надо.PHP код:
new buffer[24];
new number_1 = 10;
new number_2 = 6;
new number_3 = 142;
new number_4 = 13;
new string[12] = "Я - Легенда";
format(buffer, sizeof(buffer), "%d;%d;%d;%d;%s", number_1, number_2, number_3, number_4, string);
Распаковать строку можно с помощью любой функции-разделителя. Ну раз вопрос идёт именно о sscanf, то покажу именно на примере sscanf. Работать будем с получившейся выше строкой.
PHP код:
new number_1;
new number_2;
new number_3;
new number_4;
new string[12];
sscanf(buffer, "p<;>iiiis[12]", number_1, number_2, number_3, number_4, string);
- В массиве buffer хранится наша запакованная строка. Первым параметром функции sscanf указывается строка, с которой мы будем работать.
- Далее в скобках мы указали то, какой разделитель должна искать наша функция sscanf в данной ей строке. Указали мы его в этом участке:
sscanf(buffer, "p<;>iiiis[12]", number_1, number_2, number_3, number_4, string);
Разделителем может быть любой символ/набор символов. Если же разделитель не указать, sscanf будет использовать в качестве разделителя пробел.
- Далее указываем тип данных, который мы ожидаем получить из нашей строки, хранящейся в массиве "buffer". Сейчас мы указали 4 числа и строку.
- Ну и потом идут переменные, в которые будут записаны наши распакованные данные.
Как-то так. Это самый примитивный способ :)
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
$continue$ (04.08.2015)
Спасибо, тему можно закрывать думаю.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)