如何使用PHP将base10数字转换为数组
其含义是:如何在单个数据库字段中存储多个值,例如Optin数据 为了做到这一点,我必须知道如何编码和解码的价值。 我有一个具有不同optin值的数组:如何使用PHP将base10数字转换为数组,php,arrays,base,typeconverter,Php,Arrays,Base,Typeconverter,其含义是:如何在单个数据库字段中存储多个值,例如Optin数据 为了做到这一点,我必须知道如何编码和解码的价值。 我有一个具有不同optin值的数组: $optin = array ( '1' => 'SMS', '2' => 'Email', '4' => 'Mail', '8' => 'AppsPushNotif', '16' => 'Partners', '32' => 'Gaming Partners'
$optin = array (
'1' => 'SMS',
'2' => 'Email',
'4' => 'Mail',
'8' => 'AppsPushNotif',
'16' => 'Partners',
'32' => 'Gaming Partners'
);
ie:我将在optin field中存储:
-“7”如果用户选择加入SMS、电子邮件和邮件(4+2+1)
或
-AppsPushNotif和游戏合作伙伴的“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, ',');
在一行中解压
$value
为单个值的解决方案,这些值在$optin
中显示为键:
$value = 40;
$keys = array_map(
function($i) { return 1 << $i; },
array_keys(array_filter(str_split(strrev(decbin($value)))))
);
print_r($keys);
这应该起作用:
$output = '';
$value = 40;
$keys = array_keys($food);
foreach($keys as $key) {
if($value & $key)
$output .= $food[$key].',';
}
print rtrim($output, ',');
这应该有效:
$output=''$数值=40$键=数组_键($food);foreach($key作为$key){if($value&$key)$output.=$food[$key]。,';}打印rtrim($output,,')代码>这工作得很好!谢谢如果你认为我的回答解决了你的问题,你应该试着接受它
$output = '';
$value = 40;
$keys = array_keys($food);
foreach($keys as $key) {
if($value & $key)
$output .= $food[$key].',';
}
print rtrim($output, ',');