Как правильно хранить данные

Печать / RSS
0
1. JiGaN (18.06.19 / 12:39)
Землянин
Стоит задача, в которой у нас есть некие данные, после выбора которого должны начисляться определенные баллы. Например
Возраст до 18 - 5 баллов
18-25 - 3 балла
Пол М - 0 баллов
Ж - 1 балл.
Зареган в сети меньше года 2 балла
1-3 года 3 балла.
Т
И т.д, фильтр довольно таки большей, как бы правильно хранить эти данные и потом легко отправкой определенных пост запросов(желательно за раз) вывести их.
0
2. Вантуз-мен (18.06.19 / 16:19)
Господин ПЖ
что-то типа key->value только хранить еще поле к которому относится действие
action | key | value
age | 0 | 5
age | 18 | 3
age | 25 | 2
age | 50 | 1
gender| male | 0
gender| female | 1

и на каждый из этих action должен быть свой обработчик, функция
которая получает одни запросом where action = age
и потом типа пробежаться по всем условиям в цикле
хотя если обработчик будет, можно и в json поле хранить, так даже проще будет
key | value
age | {[0=>5, 18 => 3]} итд
0
3. JiGaN (18.06.19 / 16:25)
Землянин
Пришла в голову такого типа конструкция
[code]
$array = [
['age'=>range(16,25),'bal'=>2],
['age'=>range(26,35),'bal'=>5],
];
[code]

Может array_filter or array_column тут поможет, а как тогда присобачить к найденому запросу количество балов, х.з, подумать надо, может кто из светлых голов прольет свет на этот вопрос, @Vantuz вер ар ю)

Добавлено через 02:48 сек.
что-то типа key->value только хранить еще поле к которому относится действие
action | key | value
age | 0 | 5
age | 18 | 3
age | 25 | 2
age | 50 | 1
gender| male | 0
gender| female | 1

и на каждый из этих action должен быть свой обработчик, функция
которая получает одни запросом where action = age
и потом типа пробежаться по всем условиям в цикле
хотя если обработчик будет, можно и в json поле хранить, так даже проще будет
key | value
age | {[0=>5, 18 => 3]} итд@Vantuz (Сегодня / 16:19)

О ты здесь)
В базе все это хранить не хочу, массивами бы обойтись, да и хранить максимальный возраст.. в будущем возможно минимальные и максимальные показатели будут меняться. То что выше, можно как-то обкатать чтоб и кол баллов туда пришпунтить ?
0
4. Вантуз-мен (18.06.19 / 17:14)
Господин ПЖ
Не обязательно делать range, можно только 1 значение хранить и проверять если больше след. условие итд , это мне кажется самое простое решение будет
+1
5. JiGaN (18.06.19 / 20:32)
Землянин
range мне нужен, чтобы в будущем легко было менять элементы массивы, при уменьшении или увеличении возраста. Я добил свой вариант, вот так в целом меня устраивает
$array = [
['age'=>range(16,25),'bal' => '0.2'],
['age'=>range(26,35),'bal' => '0.4'],
['age'=>range(36,50),'bal' => '0.6'],
];


function detectBalForAge($element, $array){
foreach($array as $key=>$value){
$ar = array_search($element,$value['age']);
if($ar !==false){
return $array[$key]['bal'];
}
}
}

echo detectBalForAge(38,$array);
0
6. Кевин Митник (19.06.19 / 00:36)
Айсберг Визави
мне в голову пришла идея реализовать это с помощью битовой маски. это легко можна нагуглить как сделать. но идея в том, что имея только одну цифру, например 2024, можно знать все множество входящих параметров за одну проверку. и хранить удобно.
0
7. JiGaN (19.06.19 / 07:49)
Землянин
мне в голову пришла идея реализовать это с помощью битовой маски. это легко можна нагуглить как сделать. но идея в том, что имея только одну цифру, например 2024, можно знать все множество входящих параметров за одну проверку. и хранить удобно.@Sindbad911 (Сегодня / 00:36)

Битовая маска для такого рода задачи? Зачем и как ты себе это представляешь?)
+1
8. Кевин Митник (19.06.19 / 16:15)
Айсберг Визави
я же написал, гуглится легко. там найдешь ответы
Изменил: Кевин Митник (19.06.19 / 16:15)
Для добавления сообщения необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск