如何使用PHP将base10数字转换为数组

如何使用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数据

为了做到这一点,我必须知道如何编码和解码的价值。 我有一个具有不同optin值的数组:

$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, ',');