含义是:如何在单个数据库字段中存储多个值,例如Optin数据。
为了做到这一点,我要知道如何编码和解码值。 我有一个具有不同optin值的数组:
$optin = array (
'1' => 'SMS',
'2' => 'Email',
'4' => 'Mail',
'8' => 'AppsPushNotif',
'16' => 'Partners',
'32' => 'Gaming Partners'
);
ie。:我会在optin字段中存储: - 如果用户选择加入短信,电子邮件和邮件(4 + 2 + 1),则为“7” 要么 - AppsPushNotif和Gaming_Partners的'40'
我想找到一种方法将7或40个值解码为具有optin数组值的数组。
非常感谢
PS:感谢Cyclone的解决方案:
$output = '';
$value = 40;
$keys = array_keys($food);
foreach($keys as $key) {
if($value & $key) $output .= $food[$key].',';
}
print rtrim($output, ',');
答案 0 :(得分:0)
一行中的解决方案,将$value
解包为$optin
中显示为关键字的各个值:
$value = 40;
$keys = array_map(
function($i) { return 1 << $i; },
array_keys(array_filter(str_split(strrev(decbin($value)))))
);
print_r($keys);
输出结果为:
Array
(
[0] => 8
[1] => 32
)
答案 1 :(得分:0)
这应该有效:
$output = '';
$value = 40;
$keys = array_keys($food);
foreach($keys as $key) {
if($value & $key)
$output .= $food[$key].',';
}
print rtrim($output, ',');