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

Печать RSS
478

J
Автор
Землянин
0
Стоит задача, в которой у нас есть некие данные, после выбора которого должны начисляться определенные баллы. Например
Возраст до 18 - 5 баллов
18-25 - 3 балла
Пол М - 0 баллов
Ж - 1 балл.
Зареган в сети меньше года 2 балла
1-3 года 3 балла.
Т
И т.д, фильтр довольно таки большей, как бы правильно хранить эти данные и потом легко отправкой определенных пост запросов(желательно за раз) вывести их.

Господин ПЖ
0
что-то типа 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]} итд
J
Автор
Землянин
0
Пришла в голову такого типа конструкция
[code]
$array = [
['age'=>range(16,25),'bal'=>2],
['age'=>range(26,35),'bal'=>5],
];
[code]

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

Добавлено через 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
Не обязательно делать range, можно только 1 значение хранить и проверять если больше след. условие итд , это мне кажется самое простое решение будет
J
Автор
Землянин
+1
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
мне в голову пришла идея реализовать это с помощью битовой маски. это легко можна нагуглить как сделать. но идея в том, что имея только одну цифру, например 2024, можно знать все множество входящих параметров за одну проверку. и хранить удобно.
J
Автор
Землянин
0
мне в голову пришла идея реализовать это с помощью битовой маски. это легко можна нагуглить как сделать. но идея в том, что имея только одну цифру, например 2024, можно знать все множество входящих параметров за одну проверку. и хранить удобно.
@Sindbad911 (Сегодня / 00:36)
Битовая маска для такого рода задачи? Зачем и как ты себе это представляешь?)
К

Айсберг Визави
+1
я же написал, гуглится легко. там найдешь ответы
Изменил: Кевин Митник (19.06.2019 / 16:15)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск